본문 바로가기
프로그래밍 언어/JAVA(자바) 응용

38.String, StringBuilder, StringBuffer 클래스, text block

by lroot 2022. 5. 25.
728x90
반응형

String 클래스

- String 선언하기

String str1 = new String("abc");

String str2 = "abc";

- 힙 메모리에 인스턴스로 생성되는 경우와 상수 폴(constant pool)에 있는 주호를 참조하는 두 가지 방법

- 힙 메모리는 생성될때마다 다른 주소 값을 가지지만, 상수 폴의 문자열은 모두 같은 주소값을 가짐

 

예제

- StringTest.java

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에 연결되는 것이 아닌 새로운 문자열이 생성됨(메모리 낭비가 발생가능)

- StringTest2.java

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는 멀티 쓰레드 프로그래밍에서 동기화(sychronization)을 보장

- 단일 쓰레드 프로그램에서는 StringBuilder 사용을 권장

- toString() 메서드로 String 반환

 

예제

- StringBuilderTest.java

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));

String test = buffer.toString();
System.out.println(test);

}

}

 

test block 사용하기

- 문자열을 """ """ 사이에 이어서 만들 수 있음

- html, json 문자열을 만드는데 유용하게 사용할 수 있음

 

예제

- StringTextBlock.java

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>
""";
}

}

 

 

 

 

 

댓글