String

LJM·2022년 12월 22일
0

Java

목록 보기
13/33

String str1 = new String("abc"); //힙에 올라감
String str2 = "abc"; //상수풀


상수풀 String pool 이라고 힙에 공간이 따로 있나보다

String str3 = "abc"; //str2 와 str3는 같은 대상을 참조한다

String 은 불변
String 에 String 연결하면 기존의 String이 아닌 새로운 문자열이 생성되는 것이다

String java = new String("java");
String hello = new String("hello");

System.out.println(System.identityHashCode(java));

java = java.concat(hello);//새로운 문자열 생성후 java에 연결. 기존 java 가리키던것은 가비지컬렉터의 대상이 된다

System.out.println(System.identityHashCode(java));//주소가 변경됨을 알 수 있다

많이 사용하게 되면 메모리가 부족할 수 있으므로
StringBuilder, StringBuffer 활용 해야 한다

StringBuilder: 단일스레드 환경에서 사용

StringBuffer: 멀티스레드 동기화보장 하므로 멀티스레드환경에서 사용

String java = new String("java");
        String hello = new String("hello");

        StringBuffer buffer = new StringBuffer(java);
        buffer.append(hello);

        System.out.println(buffer.toString());
profile
게임개발자 백엔드개발자

0개의 댓글