728x90
문자열 비교하기 == 와 equals()의 차이점
문자열 비교하기 == 와 equals()의 차이점
자바에서 일반적인 데이터 타입의 비교는 `==` 라는 연산자를 사용하여 비교함. 하지만 String 문자열의 값을 비교할 때에는 `equals()` 라는 메서드를 사용하여 비교함.
`==` 연산자
public class compare {
public static void main(String[] args) {
String s1 = "abcd";
String s2 = new String("abcd");
if(s1 == s2) {
System.out.println("두 개의 값이 같습니다.");
}else {
System.out.println("두 개의 값이 같지 않습니다.");
}
}
}
- 결과: "두 개의 값이 같지 않습니다."
`==` 연산자의 경우 객체의 주소값을 비교하기 때문에 일반 객체처럼 Heap 영역에 생성된 String 객체와 리터럴을 이용해 string constant pool에 저장된 String 객체의 주소값은 다를 수밖에 없음. 그러므로 두 개의 값은 서로 다르다는 결론이 나오게 됨.
이러한 경우가 발생할 수 있기에 자바에서 문자열을 비교하려면 equals라는 메서드를 활용하여 두 개의 값을 비교해야 함.
`equals()` 메서드
public class compare {
public static void main(String[] args) {
String s1 = "abcd";
String s2 = new String("abcd");
if(s1.equals(s2)) {
System.out.println("두 개의 값이 같습니다.");
}else {
System.out.println("두 개의 값이 같지 않습니다.");
}
}
}
- 결과: "두 개의 값이 같습니다."
String 클래스안에 있는 `equals()`라는 메서드를 사용하면 두 비교 대상의 주소 값이 아닌 데이터값을 비교하기 때문에 어떻게 String을 생성하느냐에 따라 결과가 달라지지 않고 정확한 비교를 할 수 있음.
728x90