JAVA

[JAVA] 문자열 비교 총정리

Alex Han 2025. 3. 24. 04:03
반응형

1. == 연산자 (주소 비교)

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

System.out.println(a == b); // true (리터럴 풀에 저장된 동일한 주소)
System.out.println(a == c); // false (new로 만든 건 다른 주소)

 

==은 ‘주소’가 같은지 비교

내용 같아도, 주소 다르면 false

절대 문자열 내용 비교에 쓰지 말 것! (초보 실수 포인트)

 

 

 


2. .equals() (내용 비교)

String a = "hello";
String b = new String("hello");

System.out.println(a.equals(b)); // true

 

문자열 내용이 같으면 true

대소문자 구분함

• 문자열 비교 기본은 무조건 .equals()

 

 

 


3. .equalsIgnoreCase() (대소문자 무시하고 내용 비교)

String a = "Hello";
String b = "hello";

System.out.println(a.equalsIgnoreCase(b)); // true

 

대소문자 신경 안 쓰고 비교할 때 사용

 

 

 


4. .compareTo() (사전 순 비교)

String a = "apple";
String b = "banana";

System.out.println(a.compareTo(b)); // 음수 (a < b)
System.out.println(b.compareTo(a)); // 양수 (b > a)
System.out.println(a.compareTo("apple")); // 0 (같음)

 

사전 순서 기준으로 비교

음수: 왼쪽이 앞

0: 같음

양수: 왼쪽이 뒤

정렬 구현 시 유용

 

>, < 사용 불가

 

 

 


5. .startsWith() / .endsWith()

String s = "hello world";

System.out.println(s.startsWith("hello")); // true
System.out.println(s.endsWith("world"));   // true

 

특정 접두사, 접미사로 시작/끝나는지 확인할 때 사용

 

 

 


6. .contains()

String s = "hello world";

System.out.println(s.contains("lo")); // true

 

부분 문자열이 포함되어 있는지 확인할 때 사용

 

 

 


🛑 주의해야 할 실수

실수 이유
==로 문자열 비교 주소 비교라서 의도한 대로 안 될 수 있음
next()로 입력 받은 후 바로 equals() 없이 비교 ==로 비교하면 실패, 항상 .equals() 사용

 

반응형