String은 immutable
- 한번 선언되거나 생성된 문자열을 변경할 수 없음(불변성)
- String 클래스의 concat() 메서드 혹은"+"을 이용하여 String을 연결하는 경우 문자열은 새로 생성됨
package string;
public class StringTest2 {
public static void main(String[] args) {
String java = new String("java");
String android = new String("android");
System.out.println(System.identityHashCode(java));
java =java.concat(android);
System.out.println(java);
//새로운 생성된 문자열을 가르킨다.
//이렇게 메모리상의 해쉬코드 값이 달라지므로 연결해서 사용 할 경우에는
//StringBuilder 과 StringBuffer을 사용한다.
System.out.println(System.identityHashCode(java));
}
}
- StringBuilder StringBuffer(F1 눌러서 확인-> final/abstract 부분이 다르다)
가변적인 char[] 배열을 멤버변수라 가지고 있는 클래스
문자열을 변경하거나 연결하는 경우 사용하면 편리한 클래스
StringBuffer는 멀티 쓰레드프로그래밍에서 동기화(Synchronization)이 보장됨
단일쓰레드 프로그래밍에서는 StringBuilder를 사용하는 것이 더 좋다.
마지막에 toString()메서드로 String 반환해서 사용하는 방법을 추천
package string;
public class StringBuilderTest {
public static void main(String[] args) {
String java = new String("java");
String android = new String("android");
//identiy 값이 동일
StringBuilder buffer = new StringBuilder(java);
System.out.println(System.identityHashCode(buffer));
buffer.append("android");
System.out.println(System.identityHashCode(buffer));
java = buffer.toString();
}
}
반응형
'JAVA' 카테고리의 다른 글
List 인터페이스 (0) | 2019.10.08 |
---|---|
제네릭 (0) | 2019.10.07 |
컬렉션 프레임워크(Collection Framework) (0) | 2019.10.06 |
Object 클래스 (0) | 2019.10.04 |
인터페이스(Interface) (0) | 2019.10.02 |