[JAVA] 문자열 비교(==,compareTo,equals)

GyeongEun Kim·2021년 5월 4일
0

Java에서 ==를 이용한 문자열 비교

자바에서 보통 숫자형끼리 크기를 비교할때처럼 문자열도 ==을 이용하여 비교할 수 있을까? 엄밀히 말하면 정확하지 않은 방법이다.

String a = "abc";
String b = "abc";
String c = new String ("abc");

System.out.println(a==b);
//true
System.out.println(a==c);
//false

a 와 b는 같은 객체를 가리키고 있지만 c는 new 키워드를 사용하여 새로운 객체를 만들고 있다.
a,b,c는 객체안의 내용은 모두 "abc"로 같지만, c는 a,b와 다른 새로운 객체를 가리키고 있게 되는 것이다.

따라서 객체안의 내용이 같은지를 비교할때는 ==가 적합하지 않다

equals를 이용한 문자열 비교

equals는 Object클래스에 정의되어 있는 메소드이며, String클래스에서 이를 오버라이딩하여 사용한다. 매개변수로 전달된 문자열을 비교하며 boolean값을 반환한다.

String a = "abc";
String b = "abc";
		
String c = new String("abc");
		
System.out.println(a.equals(b));
//true
System.out.println(a.equals(c));
//true		

equals()를 사용하면 객체안의 문자열 내용을 비교할 수 있다.

compareTo를 사용한 문자열 비교

compareTo는 두 문자열이 단순히 같은지 아닌지를 알려줄 뿐만 아니라 어떤것이 사전적인 순서로 더 앞,뒤에 존재하는지를 알려준다.

반환값이 음수이면 compareTo를 호출하는 문자열이 더 앞에 있다는 뜻이고
반환값이 0이면 두 문자열이 같다는 뜻이고
반환값이 양수이면 매개변수로 입력되는 문자열이 더 앞에 있다는 뜻이다.

String a = "abc";
String b = "abc";		
String c = "def";
		
System.out.println(a.compareTo(b));
//0
System.out.println(a.compareTo(c));
//음수
System.out.println(c.compareTo(a));
//양수
		
profile
내가 보려고 쓰는 글

0개의 댓글