[JAVA] String 클래스
String 클래스
- String 클래스는 데이터(문자 배열 char)와 메소드(문자열 관련)로 이루어져 있다.
- 내용을 변경할 수 없는 불변(immutable) 클래스이다.
- 문자열 덧셈 연산자를 이용한 문자열 결합은 성능이 떨어진다.
"A" + "B"
와 같이 문자열끼리 더해야 할 때 새로운 객체가 만들어진다.
이로 인해 문자열 결합을 계속하게 된다면 새로운 객체도 계속 만들어지기 때문에 성능이 떨어진다.
- 문자열을 계속 더해야 할 경우가 있을 때 내용 변경 가능한
StringBuffer
를 사용하는 게 좋다.
StringBuffer
StringBuffer
클래스는 내부적으로buffer
라는 독립적인 공간을 가져 문자열을 바로 추가할 수 있어 공간 낭비도 없으며 문자열 연산 속도도 매우 빠르다.1 2 3 4 5 6 7 8 9 10 11 12
StringBuffer comment = new StringBuffer(); // StringBuffer 객체 생성 comment.append("꽁꽁"); comment.append(" "); comment.append("얼어붙은"); comment.append(" "); comment.append("한강 위로"); comment.append(" "); comment.append("고양이가"); comment.append(" "); comment.append("걸어다닙니다."); String result = sb.toString(); System.out.println(result); // 꽁꽁 얼어붙은 한강 위로 고양이가 걸어다닙니다.
문자열 비교
== 연산자
- 객체 참조(reference)를 비교한다.(두 문자열이 동일한 객체를 가리키고 있는지를 비교)
- 새로운 문자열 객체를 생성할 때마다 서로 다른 참조를 가진다. 그렇기 때문에 값이 같아도 참조는 다를 수 있다.
1
2
3
4
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // false
equals()
- 문자열의 내용이 같은지 비교한다.
- 대소문자를 구분하여 비교한다.
1
2
3
4
5
6
String str1 = "Kim";
String str2 = "Kim";
String str3 = "KIM";
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // false
equalsIgnoreCase()
equals()
와 사용 방법은 같다.- 문자열의 내용이 같은지 비교하지만 대소문자는 구분하지 않는다.
1
2
3
4
String str1 = "Kim";
String str2 = "KIM";
System.out.println(str1.equalsIgnoreCase(str2)); // true
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.