자바/자바 기본

자바 String비교 시 equals함수

은은하게미친자 2022. 6. 14. 16:56
728x90

package kr.check.test;

public class StringTEST {

public static void main(String[] args) {
// TODO Auto-generated method stub\
String str1 = "zz";
String str2 = new String("zz");

System.out.println("리터럴로 비교햇을떄");
if (str1 == "zz") {
System.out.println("비교됨");
//자바는 문자열 리터럴이 동일하면 String 객체를 공유합니다. 공유해서됨
} else {
System.out.println("비교안됨");
}

System.out.println("생성자로 생성해서 비교햇을떄");
if (str2 == "zz") {
System.out.println("비교됨");
//얜 리터럴이 아니고 객체임
} else {
System.out.println("비교안됨");
}

System.out.println("이래서 구리니까 이렇게쓰셈");
if (str1.equals(str2)) {
System.out.println("완전비교됨");
//자바는 문자열 리터럴이 동일하면 String 객체를 공유합니다. 공유해서됨
} else {
System.out.println("완전비교안됨");
}



}

}

 

 

 

결과값:

리터럴로 비교햇을떄
비교됨
생성자로 생성해서 비교햇을떄
비교안됨
이래서 구리니까 이렇게쓰셈
완전비교됨

 

 

*equals()  함수 참고

 

equals() 에서 문자배열만 같으면 true를 리턴하도록 만들어 나서 상관없지만, 나머지 프로그래머가 추가로 만든 class들(여기서 Body같은 경우)은 equals()가 주소가 같은 객체를 가리킬 때만 true를 리턴하도록 해두고 있습니다.

728x90