포스트

[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 라이센스를 따릅니다.