개인공부
[Java] 참조 타입
러쉬봠
2023. 5. 6. 09:40
데이터 타입 분류
참조 타입이란 ?
- 객체(Object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다.
메소드 영역
- 코드에서 사용되는 클래스(.class)들을 클래스 로더로 읽어 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해서 저장한다. 메소드 영역은 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역이다.
힙 영역
- 객체와 배열이 생성되는 영역이다.
- JVM은 쓰레기 수집기(Garbage Collertor)를 실행시켜 쓰레기 객체를 힙 영역에서 자동으로 제거한다.
JVM 스택(Stack)영역
- 각 스레드마다 하나씩 존재하며 스레드가 시작할 때 할당된다.
- 메소드를 호툴할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행한다.
메모리 사용 영역
- Java MemoryExample
- JVM 구동
- MemoryExample 로딩
- main 스레드 생성 - JVM 스택 생성
- main() 메소드 생성
- public static void main(String[] args){}
- int sum = 0;
- if(sum == 0) { int v2 = 10;
- int v3 = 20;
- sum = add(v2, v3);
- public static int add(int a, int b){ return a + b}
- System.out.println(sum);
- JVM 종료
null과 NullPointerException
- null(널)
- 변수가 참조하는 객체가 없을 경우 초기값으로 사용 가능
- 참조 타입의 변수에만 저장가능
- null로 초기화된 참조 변수는 스택 영역 생성
- NullPointerException
- 예외(Exception)
- 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
- NullPointerException
- 참조 변수가 null 값을 가지고 있을 때, 객체의 필드나 메소드를 사용하려고 했을 때 발생
- 예외(Exception)
int[] intArray = null
intArray[0] = 10; // NullPointerException
String str = null;
System.out.println("총 문자수 : " str.length()); // NullPointerException