< 전역 변수 >
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
'개발 > Java' 카테고리의 다른 글
[Java] 자바 - 메소드(Method) / static 메소드 (1) | 2022.09.13 |
---|---|
[Java] 자바 - 클래스 / 클래스 구조 - 필드, 생성자, 메소드 / 접근제한자 / 객체지향 프로그래밍 (0) | 2022.09.13 |
[Java] 자바 - 캡슐화(Encapsulation) (0) | 2022.09.13 |
[Java] 자바 - 배열 / 배열 복사 (0) | 2022.09.07 |
[Java] 자바 - equals() (참조자료형 String) (0) | 2022.09.07 |