Java

생활코딩 JAVA 제어문 - 비교연산자(== vs equals)

소댓 2022. 12. 13. 23:15

5. == vs equals

 

* 비교연산자 탐구 : ==과 equals라는 method를 사용할 때 차이

- 자바에는 여러가지 데이터 타입이 존재 > primitive / non primitive로 구분 가능

> primitive : 원시 데이터, 더 이상 쪼갤 수 없는 타입 (boolean, int, double, short, long, float, char)

> non primitive : 그렇지 않은 데이터 타입(String, Array, Date, File...)

- 자바는 primitive 타입과 non primitive 타입을 차별함

 

 

- primitive 타입의 경우,

int p1 = 1 이고, int p2 = 1 이라면 p1 == p2 > true 가 나옴

 

- non primitive 타입의 경우,

String o1 = new String("java")이고, String o2 = new String("java")라면, 

o1 == o2 : 동등 연산자로 판단할 경우에는 다른 곳에 위치하기 때문에 false가 나옴

o1.equals(o2) : equals로 판단할 경우에는 같은 내용이기 때문에 true가 나옴

 

* 즉, 원시 데이터 타입을 판단할 때는 동등 비교 연산자를, 

 원시 데이터 타입이 아닌 것을 쓸 때는 equals를 사용하면 된다.

> but, String은 자주 사용하기 때문에 특혜를 받음 

String o3 = "java2"이고, String o4 = "java2"일 때 o3 == o4처럼 동등 계산을 해보면 true가 나옴.