-
17. String 클래스개발자 수업/Java 2021. 10. 13. 22:11
1. String
1) 선언
- String str1 = new String("abc");
- String str2 = "abc";
- 힙 메모리에 인스턴스로 생성되는 경우(1) --> 생성될 때 마다 다른 주소 값 가짐
상수 풀(constant pool)에 있는 주소를 참조하는 두 가지 방법이 있음(2) --> 모두 같은 주소 값 가짐
2) 한 번 생성된 String 객체는 불변함 (immutable)
3) String을 연결하면 기존의 String에 연결되는 것이 아닌 새로운 문자열이 생성됨public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2); // false String str3 = "abc"; String str4 = "abc"; System.out.println(str3 == str4); // true System.out.println(str2 == str3); // false } }
public class StringTest02 { public static void main(String[] args) { String java = new String("java"); String kotlin = new String("kotlin"); System.out.println(System.identityHashCode(java)); // 961419791 java = java.concat(kotlin); System.out.println(java); // javakotlin System.out.println(System.identityHashCode(java)); // 665188480 } }
2. StringBuilder, StringBuffer
1) 내부적으로 가변적인 char[]를 멤버 변수로 가짐
2) 문자열을 여러 번 연결하거나 변경할 때 사용하면 유용함
3) 새로운 인스턴스를 생성하지 않고 char[]를 변경함
4) StringBuffer는 멀티스레드 프로그래밍에서 동기화를 보장
5) 단일스레드 프로그램에서는 StringBuilder 사용public class StringBuilderTest { public static void main(String[] args) { StringBuilder builder = new StringBuilder("java"); System.out.println(builder); // java System.out.println(System.identityHashCode(builder)); // 961419791 builder.append("kotlin"); System.out.println(builder); // javakotlin System.out.println(System.identityHashCode(builder)); // 961419791 } }
3. text block 사용하기 (java 13)
""" """public class StringTextBlockTest { public static void main(String[] args) { String textBlocks = """ 자 이건 수업중에 하는 파일인데 너무 졸리고 집중이 안되고 말을 너무 못하고 횡설수설 지리지만 어떻게 듣고있는 내가 제일 멋지다 짱짱 아무거나 넣으래서 아무거나 쓰는중 """; System.out.println(textBlocks); System.out.println(getBlockOfHtml()); } public static String getBlockOfHtml() { return """ .another_category_color_red, .another_category_color_red h4 { border-color: #F6D4D3 !important; } .another_category_color_red * { color: #E86869 !important; } .another_category_color_red th a.current{border-color:#E86869 !important;} .another_category_color_red h4, .another_category_color_red h4 a { color: #ED0908 !important; } """; } }
'개발자 수업 > Java' 카테고리의 다른 글
19. Wrapper 클래스 (0) 2021.10.14 18. Class 클래스 (0) 2021.10.14 16. Object 클래스 (0) 2021.10.13 과제2 - CarTest (0) 2021.10.13 15. 추상 클래스와 인터페이스 (0) 2021.10.13