원시 데이터 타입(primitive) 7가지
--> boolean, int, double, short, long, float, char
원시 데이터 타입이 아닌 것: String,. Array, Date, File, ...
기본적으로 원시 데이터 타입들은 같은 데이터라면 heap 안에서 같은 메모리 공간을 가리키게 된다.
int p1 = 1 ---> 같은 매모리 공간을 가리킴 (p1 == p2 는 true)
int p2 = 1
이렇게 되면 == 연사자를 사용하면 p1과 p2는 같다고 인식하게 됨.
p1 == p2 ---> true
하지만 String은 특혜를 받고있어서,
primitive가 아님에도 같은 데이터면 같은 메모리 공간을 가리킨다. (원시 데이터 타입처럼 동작한다)
String o3 = "java2" ---> 같은 메모리 공간을 가리킴 (o3 == o4 는 true)
String o4 = "java2"
그래도 쉽게말하면, 원시 데이터 타입은 == 사용하면 된다. equals를 가지고있지도 않다.(오류남)
원시 데이터 타입이 아닌 객체들에겐 equals를 사용하는게 편하다.
같은 데이터를 heap 안에서 다른 메모리 공간에 할당하고 싶으면 new 연산자를 사용하면 된다.
String ex1 = new String ("java") ---> 각각의 메모리 공간을 할당받음 (ex1 == ex2 는 false)
String ex2 = new String ("java")
'공부 STUDY > JAVA' 카테고리의 다른 글
JAVA 2회독 시작 기록 (0) | 2023.01.03 |
---|---|
[JAVA] 스프링 시작 전, 생활코딩 JAVA + 수업 완강 회고록(2) (0) | 2022.12.29 |
스프링 시작 전, 생활코딩 JAVA 입문 수업 완강 (0) | 2022.12.28 |
JAVA | Java 프로그래밍 구성 - 데이터와 문자열 (0) | 2022.06.22 |
이클립스 Eclipse 에러 해결 방법: "The compiler compliance specified is 17 but a JRE 1.8 is used" (0) | 2022.06.22 |