JAVA

equals 메소드와 == 연산자

김T준 2021. 7. 9. 14:48
728x90
equals

 

두 객체의 데이터값을 비교하는 메소드

 

ex)

String str1 = "가나다";
String str2 = "나다가";
String str3 = "가나다";

if (str1.equals(str2)) {					
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

if (str1.equals(str3)) {					
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

[실행결과]

동일하지 않은 문자입니다
동일한 문자입니다


==

 

두 객체의 주소값을 비교하는 연산자

 

ex)

String str1 = "가나다";
String str2 = "나다가";
String str3 = "가나다";

if (str1 == str2) {					
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

if (str1 == str3) {					
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

[실행결과]

동일하지 않은 문자입니다
동일한 문자입니다

 

※ String 클래스는 같은 값의 객체가 큰따옴표를 통해 생성되었을 경우 기존에 생성되어 있던 참조 변수와 같은 객체 주소값을 갖는다.


예제 1.

<equals와 == 비교>

String str1 = new String("가나다");
String str2 = new String("나다가");
String str3 = new String("가나다");

if (str1.equals(str2)) {					
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

if (str1.equals(str3)) {					
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

	//////////////////////////////////////////////////

if (str1 == str2) {						
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

if (str1 == str3) {						
	System.out.println("동일한 문자입니다");
} else {
	System.out.println("동일하지 않은 문자입니다");
}

[실행결과]

동일하지 않은 문자입니다
동일한 문자입니다
동일하지 않은 문자입니다
동일하지 않은 문자입니다

 

※ equals 메소드는 String 참조변수가 갖고 있는 객체의 값을 비교한 것이고, == 연산자는 String 참조변수가 갖고 있는 객체의 주소값을 비교한 것이기 때문에 결과값이 다르게 나온다