제주 탈출 일지

패스트캠퍼스 챌린지 22일차 본문

패스트캠퍼스 챌린지!

패스트캠퍼스 챌린지 22일차

귀건 2021. 9. 27. 23:33
728x90
반응형

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 디 오 스

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

728x90
반응형
Comments