stack 영역 - this, 메서드.
heap 영역 - 클래스 생성, 변수
출력하면 변수의 주소값이 출력
this는 자기자신의 메모리를 가리킴
자신의 주소를 가리킬 때
생성자에서 다른 생성자를 호출할 때
자기 자신을 반환할 때
class attribute, class method
모든 인스턴스가 동일한 값 참조
static variable, static method는 객체를 생성하지 않고 사용 가능
ex) 카드를 생성할 때, 카드 번호는 하나씩 증가해야하는데, 각 카드는 다른 객체가 되어야 함.
기준으로 삼는 카드 번호는 카드 인스턴스들이 모두 공유
static 메서드에서는 인스턴스 변수 사용 불가
static 메서드는 인스턴스 생성 없이 사용가능 - 인스턴스는 생성시 생김
생성시간&메모리 | 생존주기 lifetime | 범위 scope | |
---|---|---|---|
instance variable 멤버변수 | new할 때 heap에 생성 | new할 때 heap에 생성 | class 내 |
class variable static변수 | 프로그램이 메모리에 load될 때 | 프로그램이 unload 될 때까지 | 모든 instance가 공유 |
local variable 지역변수 | 변수가 선언된 함수가 수행될 때 | 함수의 수행이 끝날 때까지 | 함수 내 |