equals() 메소드
String 클래스안에 equals() 메소드는 오버라이딩이 되어 데이터 값을 비교하기 때문에 값을 비교할 때는 equals() 메소드를 사용해야 함.
== 연산자
참조 타입 변수들 간의 연산은 동일한 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 때 사용한다.
그러므로, 참조 타입의 변수의 값은 힙 영역의 객체 주소이므로 결국 주소 값을 비교하는 것이 되어 다르다는 결론이 나옴.
그런데, == 연산자로 int형, char형등에서 값을 비교 하던데..
기본 타입의 int형, char형등은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용되지만, String은 일반적인 타입이 아니라 클래스로서, Call by Reference 형태로 생성 시 주소값이 부여가 되어서, String타입을 선언했을때는 같은 값을 부여하더라도 서로간의 주소 값을 비교를 한다.
int형과 boolean과 같은 일반적인 데이터 타입의 비교는 ==연산자를 사용하여 비교를 하지만, String은 equals() 메소드를 사용하여 비교를 한다.
참고
https://coding-factory.tistory.com/536
코딩팩토리님 도움 많이 받았습니다. 감사합니다.
'Java' 카테고리의 다른 글
Jackson 라이브러리 NoSuchMethodError 오류 (0) | 2024.08.05 |
---|---|
[JAVA 자바] hashCode() 메소드 (0) | 2022.09.27 |
[Java 자바] equals (0) | 2022.09.22 |
[JAVA 자바]try-with-resource (0) | 2022.09.19 |
[JAVA 자바] 예외처리 try catch finally (0) | 2022.09.19 |