본문 바로가기

개발/Java

[Java] 자바 - 전역변수 - 클래스 변수(static변수) / 지역변수 / 상수 필드

 

< 전역 변수 >

 

1. 클래스 변수 (static 변수) : 'static'이라는 예약어가 붙은 변수

[ 표현법 ] public static 자료형 필드식별자;

- 생성시점 : 해당 객체가 생성되지 않더라도, 프로그램 시작(실행)과 동시에 메모리의 'static 영역'에 할당됨 

- 소멸시점 : 프로그램 종료시 소멸

* 프로그램 실행과 동시에 메모리 영역(static)에 공간을 만들어두고, 그 안의 값을 '공유'해서 사용

 

2. 멤버 변수(= 필드, 인스턴스변수) 

- 생성시점 : new 키워드를 사용하면, 해당 객체를 생성하는 순간 메모리의 'heap 영역'에 할당됨

- 소멸시점 : 객체가 소멸될 때 같이 소멸 (가비지 컬렉터(GC)가 메모리 정리)

 

 

< 지역 변수 >

- 생성시점 : 특정한 구역 ( { 스코프 = 코드블럭 }) 실행시, 메모리의 'stack'영역에 할당됨

- 소멸시점 : 특정한 구역 종료시 소멸

- 반드시 초기화를 해줘야 함

 

 

< 상수 필드 >

[ 표현법 ] public static final 자료형 상수필드이름 = 값; // 선언과 동시에 초기화까지

                         (final static - 순서 상관 없음)

- 한 번 지정한 값을 고정해서 쓰기 때문에 초기화 필수

- static : '공유'의 개념 => 재사용성

- final : 한 번 지정해놓고 변경하지 않음 => 상수 선언

- 값이 변경되어서는 안되는 고정적인 값들을 메모리(static)에 올려놓고 '공유'할 목적으로 사용

- 상수필드 이름은 모두 대문자로 지정

 

☆ static 예약어를 사용하는 변수, 메소드 등은 "객체를 생성하지 않아도" static에 공간이 할당됨

     ex) Math클래스의 random() - static 메소드이기 때문에 객체 생성 필요X