03. String, StringBuilder, StringBuffer 클래스, text block
String 클래스
- String 선언하기
String str1 = new String("abc");
String str2 = "abc";
-
힙 메모리에 인스턴스로 생성되는 경우와 상수 풀(constant pool)에 있는 주소를 참조하는 두 가지 방법
-
힙 메모리는 생성될때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가짐
public class StringTest {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);
String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4);
}
}
-
한번 생성된 String은 불변(immutable)
-
String을 연결하면 기존의 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);
System.out.println(System.identityHashCode(java));
}
}
StringBuilder, StringBuffer 활용하기
-
내부적으로 가변적인 char[]를 멤버 변수로 가짐
-
문자열을 여러번 연결하거나 변경할 때 사용하면 유용함
-
새로운 인스턴스를 생성하지 않고 char[] 를 변경함
-
StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화(synchronization)을 보장
-
단인 쓰레드 프로그램에서는 StringBuilder 사용을 권장
-
toString() 메서드로 String반환
public class StringBuilderTest {
public static void main(String[] args) {
String java = new String("java");
String android = new String("android");
StringBuilder buffer = new StringBuilder(java);
System.out.println(System.identityHashCode(buffer));
buffer.append("android");
System.out.println(System.identityHashCode(buffer));
java = buffer.toString();
}
}
text block 사용하기 (java 13)
-
문자열을 """ """ 사이에 이어서 만들 수 있음
-
html, json 문자열을 만드는데 유용하게 사용할 수 있음
public class StringTextBlock {
public static void main(String[] args) {
String strBlock = """
This
is
text
block
test.""";
System.out.println(strBlock);
System.out.println(getBlockOfHtml());
}
public static String getBlockOfHtml() {
return """
<html>
<body>
<span>example text</span>
</body>
</html>""";
}
}
Author And Source
이 문제에 관하여(03. String, StringBuilder, StringBuffer 클래스, text block), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ldevlog/03.-String-StringBuilder-StringBuffer-클래스-text-block저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)