ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 학원 DAY17. StringBuilder, StringBuffer 클래스
    기록 2022. 10. 3. 19:23

    < StringBuilder, StringBuffer >

    - String과는 상관없고 캐릭터를 순서대로 담고 있는 객체이다. 

    - 내부저장소(버퍼)를 갖고 있다. 

    - 기존의 "+"연산을 사용한 문자열 이어붙이기에서 문자열은 불변객체이기 때문에 기존 문자열은 그대로 메모리에 남아있고, 새로운 객체를 만든다. 따라서, 불필요한 String객체의 생성으로 인하여 메모리 부족 현상이 발생할 수 있다는 문제점이 있다. 이를 해결하기 위해 StringBuilder, StringBuffer가 있는 것이다.

    - StringBuilder객체 내부저장소에 값들을 순서대로 저장할 수 있다.

    - append()메소드를 사용하여 String객체를 매번 새로 생성하지 않고 임시저장소(버퍼)에 데이터를 순서대로 저장할 수 있다.

    - 임시저장소에 저장된 데이터는 StringBuilder에서 재정의한 toString() 메소드를 실행해서 문자열로 획득할 수 있다.

    - StringBuilder와 StringBuffer의 사용법은 완전히 동일하다. 

    - StringBuffer는 앞에 synchronized라는 키워드가 붙어 있다.

    • StringBuffer는 멀티스레드환경에서 안전하게 사용할 수 있지만 속도가 느리다.
    • StringBuilder는 멀티스레드환경에서 안전하지 않지만, 속도는 빠르다.
    package day18;
    
    public class StringApp4 {
    
    	public static void main(String[] args) {
    		/*
    		 * StringBuilder과 StringBuffer
    		 * 			값을 저장하는 내부 저장소를 가지고 있는 객체다.
    		 * 			주요 API (반환타입이 String Builder)
    		 * 				StringBuilder append(String value) 
    		 * 				StringBuilder append(int value)
    		 * 				StringBuilder append(long value)
    		 * 				StringBuilder append(double value)
    		 * 				StringBuilder append(boolean value)
    		 * 				StringBuilder append(char value)
    		 * 					- 매개변수의 인자로 전달받은 값은 StringBuilder의 내부 저장소에 순서대로 저장시킨다.
    		 * 				String toString()
    		 * 					- 내부저장소에 저장된 값을 하나의 문자열로 만들어서 반환한다.
    		 * 					- Object의 toString() 메소드를 재정의하였다.
    		 */
    		
    		StringBuilder builder = new StringBuilder();
    		// StringBuffer buffer = new StringBuffer();
    		
    		// StringBuilder객체의 내부저장소(버퍼)에 값 추가하기
    		builder.append("홍길동");
    		builder.append(",");
    		builder.append("전자공학과");
    		builder.append(",");
    		builder.append(3);
    		builder.append(",");
    		builder.append(180.5);
    		builder.append(",");
    		builder.append(81.3);
    		builder.append(",");
    		builder.append('A');
    		
    		// 내부저장소에 추가된 값을 문자열로 반환받기
    		String text = builder.toString();
    		System.out.println(text);
    		
    		StringBuilder builder2 = new StringBuilder();
    		// StringBuilder객체의 append()메소드는 StringBuilder객체를 반환하기 때문에
    		// 메소드체이닝(Method Chaining)이 지원되는 메소드다.
    		String text2 = builder2.append("김유신")
    			.append(",")
    			.append("기계공학과")
    			.append(",")
    			.append(4)
    			.append(",")
    			.append(178.6)
    			.append(",")
    			.append(70.3)
    			.append(",")
    			.append("AB")
    			.toString();
    		
    		System.out.println(text2);
    	}
    
    }
    
    [실행결과]
    홍길동,전자공학과,3,180.5,81.3,A
    김유신,기계공학과,4,178.6,70.3,AB

    메소드 체이닝 (Method Chaining)

    : 객체가 자기자신을 반환하는 경우에는 이어서 쓸 수 있다. 

    '기록' 카테고리의 다른 글

    학원 DAY19. Wrapper 클래스  (0) 2022.10.03
    학원 DAY18. System 클래스  (0) 2022.10.03
    학원 DAY 17. String 클래스  (0) 2022.10.03
    학원 DAY 17. API, Object, 접근제한자  (0) 2022.10.02
    학원 DAY 16. 상속과 구현  (0) 2022.10.02

    댓글

Designed by Tistory.