-
JAVA - 클래스변수, 인스턴스변수, 지역변수Programming Language/java 2021. 1. 5. 19:42
class Test{ int x; // 인스턴스 변수 static int y; // 클래스 변수 void z(){ int z; // 지역 변수 } }
클래스 변수
- 클래스들이 jvm 올라갈 때 메모리 할당
- 클래스 영역에 존재, 모든 객체가 공통된 저장공간(변수)를 공유한다 ,gc의 관리 대상 x
- 객체 생성하지 않고 static 자원에 접근 가능
인스턴스 변수
- 인스턴스 생성시 만들어짐
- 인스턴스마다 독립된 저장공간을 가진다.
지역변수
- 메소드 내에서만 사용가능, 메소드 종료되면 사용 x
new 를 통한 객체의 메모리는 heap
stack에는 원시타입의 메모리와 객체의 주소값은 stack
final제어자 사용시
[표 1] final 제어자의 효과
대상
제한
클래스
다른 클래스에서 상속을 하지 못 한다.
메소드
상속 받은 클래스에서 오버라이딩 하지 못한다.
클래스 변수
선언과 동시에 값을 지정하여야하며 이후 수정이 불가하다.
인스턴스 변수
선언과 동시에 초기화하거나 생성자 내에서 값을 지정할 수 있다. 이후에는 수정이 불가하다.
지역 변수
선언과 동시에 초기화하거나 그 이후에 값을 지정할 수 있다. 이후에는 수정이 불가하다. (ex final a; a=22; 이후 수정불가)
'Programming Language > java' 카테고리의 다른 글
[디자인 패턴] Iterator 패턴 (0) 2023.08.19 Thread start() run() 차이 (0) 2022.06.26 Java 배열 내용 값이 같은지 비교하려면, (0) 2021.01.04 java 오버라이딩 예제 (0) 2020.12.12 람다식이란?? (0) 2020.09.30