[JAVA] String 비교 방법

HyeJin Jeon·2020년 5월 18일
0

JAVA

목록 보기
1/2
  1. ==
  2. equals()
  3. intern() + ==

==

String 간의 비교에는 사용할 수 있으나,
byte[]를 기반으로 생성된 String 등의 비교에는 적절하지 않다.

아래와 같은 경우에는 주소 값을 비교.

public class Case1 {

	public static void main(String[] args) {
		
		String a = "aa";
		
		byte[] bb = new byte[] {'a','a'};
		String b = new String(bb);
		
		System.out.println(a);	// aa
		System.out.println(b);	// aa
		
		System.out.println(a == b); // false		
	}
}

equals

순수하게 문자열을 비교한다.

public class Case2 {

	public static void main(String[] args) {
		
		String a = "aa";
		
		byte[] bb = new byte[] {'a','a'};
		String b = new String(bb);
		
		System.out.println(a);	// aa
		System.out.println(b);	// aa
		
		System.out.println(a.equals(b)); // true		
	}
}

장점
1. 순수하게 문자열을 비교할 수 있다.
2. 정적 문자열을 앞에 배치함으로써 NullPointError 를 방지할 수 있다.

String str = null;
str.equals("");	// NullPointError
"".equals(str);	// 정상 작동

intern()

주소값을 동일하게 변경해 준다.
case 1과 같은 상황에서도 주소값 비교가 아닌, 문자열 비교를 가능하게 한다.

public class Case3 {

	public static void main(String[] args) {
		
		String a = "aa";
		
		byte[] bb = new byte[] {'a','a'};
		String b = new String(bb);
		
		System.out.println(a);	// aa
		System.out.println(b);	// aa
		
		System.out.println(a == b.intern()); // true		
	}
}
profile
Backend Developer

0개의 댓글