문자열을 생성자의 매개변수로 하여 생성
String str1 = new String ("abc");
: "abc"문자열을 위한 메모리가 할당되고 새로운 객체가 생성
이미 생성된 문자열 상수를 가리키는 방식
String str2 = "test";
: 기존 "test" 문자열 상수의 메모리 주소를 가리킨다
두 문자열을 연결할 때,
문자열은 불변하므로 변수의 값이 변하는게 아니라 새로운 문자열이 생성된다
String 클래스는 한 번 생성되면 값 변경 x , 새로운 객체가 만들어진다 👉 메모리 낭비
StringBuilder
, StringBuffer
클래스는 내부에
변경 가능한 char[ ]를 가지고 있어 배열이 확장되므로 메모리 사용 x
차이점
StringBuilder
: 싱글 스레드 -> 속도 향상
StringBuffer
: 멀티 스레드 -> 동기화 보장
문자열이 안전하게 변경되도록 보장 유무 차이