본문 바로가기

Study/Java

Java - 데이터 타입(참조 타입)

데이터 타입 중 두 번째

 

참조타입이란?

 

값을 저장하는 기본 타입과는 달리 참조 타입은 그 주소를 참조하는 데이터 타입이다.

 

위의 그림과 같이 기본 타입 변수는 스택에 값이 직접적으로 저장된다.

 

참조타입 변수는 이와 다르게 힙 영역에 객체로 저장되어 객체가 포함하는 속성(변수)가 스택에 저장된다.

 

흔히 사용하는 String도 클래스로 String을 선언하면 하나의 객체를 생성하는 것과 같다.

참조 타입 비교

기본 타입은 변수의 값을 비교하나, 참조 타입은 동일한 객체를 참조하는지 다른 객체를 참조하는지 조사한다.

따라서 실제 값이 같더라도 주소가 다르면 == 연산의 결과가 false가 나올 수 있다.

 

코드로 확인하면 

String name1 = "신용권"; // "신용권" : 문자리터럴 -> heap영역에 저장
String name2 = "신용권"; // 위와 동일 -> 위의 문자 리터럴과 같은 문자열 -> 동일한 문자열
String name3 = new String("신용권"); // 인스턴스 객체 -> heap영역에 저장
String name4 = new String("신용권");

위와 같이 코드를 작성했을 때 다음과 같이 메모리에 저장된다.

 

new String(); 을 통해 객체로 생성한 String 객체는 그 값이 같더라도 다른 주소에 저장된다.

실제로 name3과 name4를 ==로 비교하면 false가 나온다.

'Study > Java' 카테고리의 다른 글

Java - 상속_ 재정의 (Override)  (0) 2022.07.06
Java - 접근 제한자(public이 뭐야)  (0) 2022.07.05
Java - 객체와 상속  (0) 2022.07.04
Java - 변수 선언과 변수 명명 규칙  (0) 2022.06.30
Java - 데이터 타입(기본 타입)  (0) 2022.06.30