본문 바로가기
Java

[Java] static 변수에 대해서 / 클래스 멤버 변수 / 인스턴스 멤버변수

by bkuk 2022. 9. 28.

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 변수는 인스턴스 생성과는 별개이므로 인스턴스보다 먼저 생성

 

 

 

위와 같이 클래스 전반에서 공통으로 사용할 수 있는, 공용으로 사용 가능한

 기준 변수라는 것을 확인할 수 있음.

댓글