자바 String비교 시 equals함수
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를 리턴하도록 해두고 있습니다.