반응형
null
- 참조타입 변수에 참조하고 있는 주소가 없음을 의미하는 초기값
NullPointerException
- 참조타입 변수에 참조 주소가 없는데 해당 변수의 참조 데이터를 사용하려 할 때 발생하는 예외
String str = null;
boolean result = str.equals("java");
System.out.println(result);
System.out.println("프로그램 종료");
참조타입
- 변수에 직접 데이터를 갖지 않고 별도의 주소값을 참조하는 형태의 데이터 타입을 의미함
- 동등비교 연산자로 비교할 수 없다 -> 동등비교 연산자는 변수 안의 직접적인 값을 비교하기 때문(stack영역)
- 문자열, 객체, 배열 ( 기본타입 : 정수, 실수, 논리 )
스택 영역 : 변수
메소드 영역 : 클래스
힙 영역 : 문자열, 객체, 배열
String a = "가";
String b = "가";
String c = new String("가");
==(동등비교연산자) : 스택 안의 값을 비교
리터럴은 똑같은 값은 똑같은 주소값을 가짐
new String() 하면 새로 String을 만들라고 하는거니까 새로운 주소에 값을 저장
stack 에서 a = 100번지, b = 100번지, c = 101번지 로 다르기 때문에
a == b -> true , a == c -> false
null로 초기화된 참조변수는 스택 영역에 생성
String a = null;
String b = null;
a == b -> true
null일 경우는 .equals() 사용할 경우 NullPointerException 발생
. 은 참조타입의 주소쪽으로 가는데 null은 참조되는 주소가 없기 때문이다.
반응형
'Java' 카테고리의 다른 글
[Java] 배열, 향상된 for문, 열거 (0) | 2024.07.29 |
---|---|
[Java] String, String이 제공하는 기능들 (0) | 2024.07.28 |
[Java] Scanner, while, do-while, break, continue (2) | 2024.07.26 |
[Java] for, 이중 for문 (2) | 2024.07.25 |
[Java] switch case (2) | 2024.07.24 |