모든 언어에서의 데이터 타입은 크게 원시 타입(primitive type)과 참조 타입(reference type)으로 구분된다.
원시 값은 메모리에 값이 그대로 할당된다. 하지만 참조 타입은 메모리에 실제 값이 있는 주소를 참조한다.
원시타입은 모든 숫자형, char, boolean 등이 있고, 참조 타입은 String, Class, Interface, 배열 등이 있다.
String이 참조 타입이니 메모리에 실제 값이 있는 주소를 참조하게 된다.
원래는 메모리 영역이 스택과 힙으로 나눠 져서 구동 되지만 이해를 돕기 위해 하나의 메모리로 그림을 그렸다.
위 처럼 string name과 string name2는 값이 kang 으로 같은 값이지만 메모리의 주소는 다르다.
== 는 메모리의 값을 비교 하므로 주소값이 틀려 false가 되고, equals() 함수는 메모리가 참조하는 값을 비교해서 true가 된다.
'Language > Java' 카테고리의 다른 글
[Java] 변수의 자동타입 변환과 강제타입 변화 (0) | 2023.11.22 |
---|---|
[Java] 변수 사용과 변수 타입 별 특징 (0) | 2023.11.20 |
[Java 8] 인터페이스의 변화(기본 메서드와 스태틱 메서드) (0) | 2022.06.15 |
[Java 8] 메서드 레퍼런스(Method Reference) 사용 방법 4가지와 간단한 사용예제 (0) | 2022.06.15 |
[Java 8] 람다식 문법과 함수형 인터페이스 람다식으로 사용법 변수캡쳐 설명 (0) | 2022.06.14 |