자바에서 String 을 비교 할때
== 와 equals() 함수의 차이점은 바로 이것이다.
1. == 은 주소값을 비교한다
2. equals() 은 문자열 값을 비교한다.
즉, 문자열을 비교하기 위해서는 equals() 함수를 사용해야 한다.
하기 코드를 보자.
public class StringCompare { public static void main(String[] args) {
String text1 = "hello"; String text2 = "hello"; // 위의 경우 text1 과 text2 는 공통된 주소값을 가진다. String text3 = new String("hello"); // text3 은 text1,text2 와 주소값은 다르나 문자열값은 같다.
if(text1 == text2) { System.out.println("text1과 text2는 같은 주소 입니다."); } if(text1 == text3) { System.out.println("text1 과 text3은 같은 주소 입니다."); } if(text1 == "hello") { System.out.println("text1 과 hello 는 같은 문자열 입니다"); }
System.out.println("");
if(text1.equals(text2)) { System.out.println("text1 과 text2는 같은 문자열 입니다"); } if(text1.equals(text3)) { System.out.println("text1 과 text3은 같은 문자열 입니다."); } if(text1.equals("hello")) { System.out.println("text1 과 hello 는 같은 문자열 입니다."); }
System.out.println("");
// text3의 주소값은 찍어보면 다르게 나온다. System.out.println("text1 의 주소값= 0x" +Integer.toHexString(System.identityHashCode(text1))); System.out.println("text2 의 주소값= 0x" + Integer.toHexString(System.identityHashCode(text2))); System.out.println("text3 의 주소값= 0x" + Integer.toHexString(System.identityHashCode(text3)));
} } |
[ 결과 값 ] text1과 text2는 같은 주소 입니다. text1 과 hello 는 같은 문자열 입니다
text1 과 text2는 같은 문자열 입니다 text1 과 text3은 같은 문자열 입니다. text1 과 hello 는 같은 문자열 입니다.
text1 의 주소값= 0x15db9742 text2 의 주소값= 0x15db9742 text3 의 주소값= 0x6d06d69c |
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
안드로이드 finish() 함수의 용도 (6) | 2020.03.24 |
---|---|
안드로이드 스튜디오 unescaped apostrophe in string 에러가 발생시 (0) | 2020.03.22 |
안드로이드 뷰 페이저 만들기. (13) | 2020.03.12 |
JAVA 클래스 형변환을 알아보자. (12) | 2020.03.08 |
안드로이드 스튜디오 창 여러개 열기 (2) | 2020.03.05 |
댓글