String 클래스
String 클래스는 java.lang 패키지에 포함된 클래스이다.
String str1 = "abcd"; //스트링 리터럴로 String 객체 생성
char data[]= {'a', 'b', 'c', 'd'};
String str2 = new String(data);
위 코드의 str2는 아래의 str3와 같은 값을 가진다.
String str3 = new String("abcd");
스트링 리터럴과 new String()으로 생성된 스트링 객체 비교
스트링 리터럴은 자바 내부에서 리터럴 테이블로 특별히 관리하여 동일한 리터럴을 공유시킨다.
하지만 new String() 으로 생성된 스트링은 new를 이용하여 생성되는 다른 객체와 동일하게 힙 메모리에 생성된다.
String a = "hello";
String b = "hello";
위 코드는 "hello" 라는 문자열로 같으므로 리터럴 테이블에 같은 메모리 공간으로 공유한다.
String c = new String("hello");
String d = new String("hello");
위 코드는 "hello" 라는 문자열로 다른 공간을 점유하고 있으며 힙 메모리에 생성된다.
스트링 객체는 수정이 불가하다.
String s = new String("hello");
String t = s.concat("java");
다음 코드를 통해 s → "hello" , t→"hellojava" 를 참조하게 된다.
s = s.concat("java");
따라서 문자열 s 를 변경하려면 다음과 같이 해야한다.