본문 바로가기

JAVA

[JAVA] 기초문법 - 클래스와 객체2(3)

static 변수

static 변수는 data영역, 상수영역,정적영역 등으로 불리는 다른 영역에 메모리에 저장된다. 저장되는 시점은 new 키워드를 사용해서 인스턴스가 생성되는 시점이 아닌, 프로그램이 메모리에 로드 될때 할당된다. 상수,리터럴, static 변수 등이 저장되어있다.

공유변수를 이용한 1씩 증가하는 학번 부여 예제

공유변수가 1씩 증가하면서 학번이 부여되고 있다. 인스턴스가 생성될때 공유변수의 값을 1 증가시켜 학번으로 부여(학번은 인스턴스의 변수이므로 공유되지 않는다.)

 

데이터영역: static 변수,리터럴 등

스택메모리: 지역변수(메소드의) 등

힙메모리: 인스턴스 등

static 변수를 참조 할때는 인스턴스.static변수가 아닌

클래스명.static변수로 많이 사용한다. static 메서드를 호출때 또한 클래스명.메서드이름 의 형식을 사용한다.

static메서드 안에서

인스턴스가 생성됐는지 안됐는지 모르기 때문에 멤버변수, 인스턴스 변수를 사용 할 수 없다. 지역변수는 사용가능하다.

static 변수를 선언할때 너무 큰 메모리를 사용하면 안된다.