우주코딩
스태틱 / 인스턴스 / 로컬 변수, 스태틱 / 인스턴스메서드 본문
스태틱 변수, 인스턴스 변수, 로컬 변수
class Test {
static int a; 스태틱, 클래스 변수(필드)
int b; 인스턴스 변수
void m1(int c){ //로컬변수
int d; 로컬변수
}
}
- 로컬변수의 lifecycle
메서드 호출될 때 만들어지고 메서드 호출이 끝나면 소멸한다.(JVM Stack)
파라미터도 로컬변수다. - 인스턴스 변수의 lifecycle
new Test명령을 실행할 때 생성된다. 가비지 컬렉터에 의해 수집될 때, JVM 종료할 때 사라진다. (Heap) - 클래스 변수의 lifecycle
클래스가 로딩될 때 생성된다. 클래스가 언로드 될 때, JVM 종료할 생성된다. (Method Area)
스태틱 메서드와 인스턴스 메서드
class Test{
static void m1(){
}
void m2(){
this
}
}
이 class Test 코드는 Method Area에 보관된다.
%%% 메서드 코드나 클래스 코드가 놓이는 곳은 Method Area이고 JVM Stack, Heap은 '변수' 만 들어간다. %%%
%%% new 명령으로 만들어지는 Heap영역 메모리는 메서드 안에 인스턴스 변수 없으면 인스턴스 변수는 없지만 인스턴스의 최소한의 부가 정보( 클래스 이름 등)를 저장할 변수가 만들어진다. 인스턴스 변수가 없다고해서 인스턴스가 생성되지 않는 것은 아니다! 그리고 그 최소한의 값이 담긴 메모리의 주소값이 만들어질거고 그 주소값을 저장하는 변수(Test t = new TesrT();)를 선언해서 저장한다. %%%
static 메서드/클래스 메서드
인스턴스 없이 호출 => 클래스명.메서드명()인스턴스 메서드
인스턴스가 있어야만 호출한다. => 레퍼런스.메서드명()
메서드를 호출할 때 저장한 인스턴스 주소는 'this'라는 내장변수에 보관된다.
BoardHandler boardhandler2 = new BoardHandler();
기능 중심
- BoardHandler 의 인스턴스 생성
- BoardHandler 설계도에 따라 변수를 준비하라
- BaordHandler의 메서드가 실행하는 동안(작업하는 동안) 사용할 변수를 준비하라
~ 같은 의미이다 ~
Board board = new Board();
데이터 중심
- Board 의 인스턴스 생성
- Board 설계도에 따라 인스턴스 변수를 준비하라
- Board 데이터를 저장할 변수를 준비하라
'자바 본 강의' 카테고리의 다른 글
클래스와 생성자, 인스턴스 필드와 블록 (0) | 2021.07.27 |
---|---|
의존 객체, 클래스 간의 관계, 생성자 선언, 패키지의 분류 (0) | 2021.07.26 |
스태틱 변수, 인스턴스 변수, 스태틱 메서드, 인스턴스 메서드 (0) | 2021.07.20 |
레퍼런스 리턴하기, 재귀 호출, 메인 메서드와 아규먼트 (0) | 2021.07.16 |
가변 파라미터와 배열 파라미터, 로컬변수와 파라미터, call by value, call by reference (0) | 2021.07.14 |
Comments