2022.07.04
String 클래스
String 선언하기
String str1 = new String("abc");
String str2 = "abc";
힙 메모리에 인스턴스로 생성되는 경우와 상수 풀(constant pool)에 있는 주소를 참조하는 두 가지 방법
힙 메모리는 생성될때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가짐
출력결과
주소값을 비교하여 같은 주소면 true 다른 주소값이면 false가 출력되었다
한번 생성된 String은 불변(immutable)
String을 연결하면 기존의 String에 연결되는 것이 아닌 새로운 문자열이 생성됨 ( 메모리 낭비가 발생할 수도 있음)
출력결과
두 개의 String java, android 연결시 새로운 주소값이 출력됨
StringBuilder, StringBuffer 활용하기
내부적으로 가변적인 char[]를 멤버 변수로 가짐
문자열을 여러번 연결하거나 변경할 때 사용하면 유용함
새로운 인스턴스를 생성하지 않고 char[] 를 변경함
StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화(synchronization)을 보장
단일 쓰레드 프로그램에서는 StringBuilder 사용을 권장
toString() 메서드로 String반환
출력결과
text block 사용하기 (java 13)
문자열을 """ """ 사이에 이어서 만들 수 있음
html, json 문자열을 만드는데 유용하게 사용할 수 있음