Java/JAVA의 정석

String 클래스

Jenny_yoon 2022. 11. 18. 22:44
728x90
반응형

1) String 클래스

  •  데이터 (char[]/문자배열) + 메서드(문자열 다루는데 필요한) 
  •  내용을 변경할 수 없는 불변(immutable) 클래스
    String a = "a";
    String b = "b";
    a = a + b;  // "ab"문자열이 새로운 객체로 생성되는 것. (a객체가 바뀌는게 아님)
  •  덧셈연산사(+)를 이용한 문자열 결합은 성능이 떨어짐. (계속 새로운 객체가 만들어지니까)
  • 문자열의 결합/변경이 잦은경우, 내용변경 가능한 StringBuffer라는 클래스 사용.

2) 문자열의 비교

- String str1 = "abc"; 

   String str2 =  "abc";   // "abc"라는 같은 객체를 str과 str2가 함께 공유

   str1 == str2 ? true -> 주소비교

   str1.equals(str2) ? true  -> 내용비교

- String str3 = new String("abc"); 

   String str4 = new String("abc"); // str3, str4 각자 다른 "abc" 객체 생성

   str3 == str4 ? false

   str3.equals(str4) ? true

즉, 문자열 비교할 땐, 항상 euqals()를 통해 비교해야함 !

 

3) 문자열의 리터럴(상수)

- 문자열 리터럴은 프로그램 실행시 자동으로 생성됨(constant pool에 저장)

- 같은 내용의 문자열 리터럴은 하나만 만들어짐.

 

4) 빈 문자열("", empty string) 

728x90
반응형