Java
[Java] static 변수에 대해서 / 클래스 멤버 변수 / 인스턴스 멤버변수
bkuk
2022. 9. 28. 11:11
static 변수란?
클래스 전반에서 공통으로 사용할 수 있는 기준 변수가 있어야 합니다.
클래스에서 공통으로 사용하는 변수를 'static 변수' 로 선언합니다.
static 변수의 정의와 사용방법
'정적 변수' 라고도 합니다.
static 변수는 클래스 내부에서 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새롭게 생성되는 변수가 아닙니다.
static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리에 할당되며, 모든 인스턴스가 공유합니다.
클래스 파일에서는
public class Student01_2 {
public static int studentID = 100;
public static int schoolClass = 2;
public String studentName;
public String getStudentName() {
return studentName;
}
public void setStudentName(String name) {
studentName = name;
}
}
클래스 파일에서 멤버 변수 3가지를 정의했습니다.
학번을 의미하는 'studentID' , 반 번호를 의미하는 'schoolClass' , 이름을 의미하는 'studentName'
또한, 클래스 파일에서 클래스 메서드 2가지를 정의했습니다.
메서드를 호출 했을 경우 위에서 정의한 studentName을 반환해주는 메서드, 메서드 호출 시 인자 값으로 문자열을 입력한 경우 studentName의 변수 값이 해당 문자열로 할당되는 메서드
실행 파일에서는
public class StudentTest1_2 {
public static void main(String[] args) {
// 'st01' 이라는 이름을 가진 인스턴스 생성
Student01_2 st01 = new Student01_2();
// 메서드를 호출 후 변수 studentName의 값을 "홍길동"이라고 할당
st01.setStudentName( "홍길동" );
// studentName을 반환해주는 메서드를 호출
System.out.println( st01.getStudentName() );
}
}
① 'st01' 이라는 인스턴스를 생성 후
② 'setStudentName'의 인자 값을 "홍길동"이라고 입력해서 변수값이 "홍길동"으로 할당되었으며,
③ studentName을 반환해주는 메서드를 호출
출력
참조 변수.멤버 변수 를 통한 출력
노란줄의 의미는 오류가 아니라,
이 변수는 static 변수이므로 인스턴스 참조 변수가 아닌 클래스 이름으로 직접 참조하라는 뜻
studentID 변수를 직접 클래스 이름으로 참조
static 변수는 인스턴스가 생성되지 않아도 사용할 수 있기 때문에, 클래스 이름을 통해 사용 가능
즉, static 변수는 인스턴스 생성과는 별개이므로 인스턴스보다 먼저 생성