728x90

 

JAVA 제어문 - 5. == vs equals

== equals 차이점 알아볼

 

 

자바의 데이터타입 두가지

구분하는 이유 : 기본형(primitive) 아닌 것을 자바가 차이를 두기 때문

 

 

1.primitive (원시 데이터타입)

boolean, int, double, short, long, float, char

 

2.non primitive

String, Array, Date, File…

 

 

자바가 타입을 어떻게 차별하고 뭐가 다른지를 알아보자

 

같은 1 value값이기에 다른 곳에 저장하면 낭비니 p1 1 값이 저장된 곳에 1 값을 똑같이 p2 끌어오게 자바에서는 처리한다

이때 같은 곳을 가리키고 있냐고 알아보는 것이 ==이고 결과값은 true 나온다.

 

 

위에 처럼

String o1 = new String("java");
String o2 = new String("java");

둘이 값은 같은데 == 보면 어떨까? false 된다. 같은 값이지만 ==(primitive data type) 같은 곳에 위치하는지 저장됬는지 주소를 보고 판단하기 때문

 

 

그렇다면 equals(non primitive data type)?

o1.equals(o2) 메소드 호출

내용이 같은지 판단하기에 true

 

 

 

원시 데이터 타입(primitive) 때는 동등비교연산자를 쓰면 된다

원시 데이터 타입은 equals 가지고 있지 않기에 쓰면 에러

원시 데이터 타입이 아닌 (non primitive) 때는 equals 써라

 

 

 

예외 : 문자열

(자주사용 편의성 성능 등으로 인한 특혜)

마치 원시 데이터 타입처럼 작동함 : non primitive type이지만 새로운 값을 생성하지 않고, 같은 값의 주소로 처리

String o3 = "java2"
String o4 = "java2"

 

 

== 동등 비교 연산해보면 true

 

 

 

*이 객체와 객체가 같은지 알아볼려면 검색해서 따져봐라

객체라고 하는 것은 복합적인 데이터타입이기 때문에 비교가 쉽지 않기 때문

 



==와 equals의 차이를 더 이해하려면

call by reference와 call by value에 대해 아래 링크에서 좀 더 알아보자

https://rise-up.tistory.com/182

 

 

 

 

 

728x90
반응형

+ Recent posts