티스토리 뷰
참조 타입의 종류는 배열, 열거, 클래스, 인터페이스가 있다.
int, char같은 기본 타입 변수는 스택(Stack) 영역에 직접 값을 갖고 있지만, 참조 타입 변수는 스택 영역에서 값이 아니라 힙 영역(Heap)의 주소값을 가진다. (참조 타입의 실제 값은 힙영역에 생성된다!)
참조 변수의 비교 연산(==, !=)
비교 연산은 기본 타입 변수의 경우 변수의 값이 같은지 아닌지 비교하지만, 참조 타입 변수의 경우 같은 객체를 참조하는지 아닌지 비교하게된다.
null
참조 타입의 변수는 힙 영역의 객체를 참조하지 않는 뜻으로 null값을 가질 수 있다. 이경우 스택 영역에는 변수는 생성하지만 힙 영역에는 객체를 생성하지 않는다.
null을 가지고 있는 참조변수를 사용할경우 NullPointerExcepton 오류가 발생한다.
String
String도 참조 타입이다.
서로 다른 String 변수의 리터럴(값) 이 같을경우 동일한 객체를 참조하게 된다.
public class Main {
public static void main(String[] args) throws IOException {
String name1 = "김자바";
String name2 = "김자바";
String name3 = new String("김자바");
String name4 = "홍길동";
if(name1 == name2) {
System.out.println("name1와 name2는 참조가 같다");
}else {
System.out.println("name1와 name2는 참조가 다르다");
}
if(name1 == name3) {
System.out.println("name1와 name3는 참조가 같다");
}else {
System.out.println("name1와 name3는 참조가 다르다");
}
if(name1.equals(name3)) {
System.out.println("name1와 name3는 문자열이 같다");
}else {
System.out.println("name1와 name3는 문자열이 다르다");
}
}
}
결과
name1와 name2는 참조가 같다
name1와 name3는 참조가 다르다
name1와 name3는 문자열이 같다
'Study ! > JAVA' 카테고리의 다른 글
JAVA 정리 4-1. 상속과 Override (0) | 2018.09.13 |
---|---|
JAVA 정리 3. 접근 제한자 (public, protected, private) (0) | 2018.09.09 |
JAVA 정리 2. 클래스 (0) | 2018.09.09 |
JAVA 정리 1-2. 2차원 배열과 동적할당 (0) | 2018.09.07 |
JAVA정리 1-1. 배열 (0) | 2018.09.07 |
댓글