앱 만들기/안드로이드

자바 String 비교 하기 == , equals()

나도 처음이야 2020. 3. 15.

자바에서 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("text1text2는 같은 주소 입니다.");

}

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)));

 

}

}

 

[ 결과 값 ]

text1text2는 같은 주소 입니다.

text1 hello 는 같은 문자열 입니다

 

text1 text2는 같은 문자열 입니다

text1 text3은 같은 문자열 입니다.

text1 hello 는 같은 문자열 입니다.

 

text1 의 주소값= 0x15db9742

text2 의 주소값= 0x15db9742

text3 의 주소값= 0x6d06d69c

 

반응형

댓글