일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- SKT
- 패스트캠퍼스
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 패스트캠퍼스후기
- 직장인인강
- R
- AI
- albert
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 알버트
- 직장인자기계발
- 패캠챌린지
- Today
- Total
제주 탈출 일지
패스트캠퍼스 챌린지 22일차 본문
4주차 시작.. 벌써 22일이다.
03. String, StringBuilder, StringBuffer 클래스, text block
단순히 String을 +로 사용하게 되면 메모리 낭비가 심하다. ㅜ
text block -> java13부터 사용가능
String str1 = new String("abc"); //힙에 공간이 잡힙
String str2 = "abc"; // 상수 풀의 문자열 "abc"의 주소를 가리킴
한 번 생성된 String은 불변(immutable)
String을 연결하면 기존의 String에 연결되는 것이 아닌 새로운 문자열이 생성됨( 메모리가 낭비가 발생할 수 있음 )
java = java.concat(android); 하면 (android = new String("android))
이 경우 java android 라는 문자열이 새롭게 생성되고, java가 해당 문자열을 가리키게 된다.
("java"는 없어지지 않음)
그래서 StringBuilder , StringBuffer를 활용하는 것을 권한다.
StringBuilder, StringBuffer
내부적으로 가변적인 char[] 멤버 변수로 가짐
문자열을 여러번 연결하거나 변경할 때 사용하면 유용하다.
새로운 인스턴스를 생성하지 않고 char[] 를 변경함
StringBuffer는 멀티 스레드 상황에서 동기화가 제공이 된다. (두개이상의 스레드가 서로 같은 메모리를 접근할 때 순서가 정해짐)
단일 스레드 상황에는 String Builder, 멀티 스레드 상황에는 String Buffer를 사용하면 된다.
StringTest
package ch03;
public class StringTest {
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));
//java의 address가 다르다.
}
}
StringBuilderTest
package ch03;
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));
// hashCode는 동일하다.
String test = buffer.toString();
System.out.println(test);
}
}
TestBlockTest
package ch03;
public class TestBlockTest {
public static void main(String[] args) {
String textBlock = """
Hello,
hi,
how r u""";
System.out.println(textBlock);
System.out.println(getBlockOfHtml());
}
public static String getBlockOfHtml() {
return """
<html>
<body>
<span><example text></span>
</body>
</html>""";
}
}
textblock 실습 화면

textblock은 유용하지만 자바13을 지원하는 곳이 그렇게까지 많지는 않기 때문에 알아두기만 하는 걸로...
레오폴드 키보드 스위치소리가 너무 거슬려서 오늘은 윤활하러감니ㅏㄷ... 내일은 더 많이 할게요.
A 디 오 스
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'패스트캠퍼스 챌린지!' 카테고리의 다른 글
패스트캠퍼스 챌린지 24일차 (0) | 2021.09.29 |
---|---|
패스트캠퍼스 챌린지 23일차 (0) | 2021.09.28 |
패스트캠퍼스 챌린지 21일차 (0) | 2021.09.26 |
패스트캠퍼스 챌린지 20일차 (0) | 2021.09.25 |
패스트캠퍼스 챌린지 19일차 (0) | 2021.09.24 |