728x90
반응형
StringBuffer

 

StringBuffer는 문자열을 추가하거나 변경 할 때 주로 사용하는 자료형이다.

 

  • append :
    StringBuffer 자료형은 append 메서드를 사용하여 계속해서 문자열을 추가해 나갈 수 있다.
    그리고 toString() 메서드를 이용하여 String 자료형으로 변경할 수 있다.
    • StringBuilder :
      StringBuffer와 비슷한 자료형으로 StringBuilder가 있다.
      StringBuilder의 사용법은 StringBuffer의 사용법과 동일하다.
      StringBuffer는 멀티스레드 환경에서 안전하다는 장점이 있고, StringBuilder는 StringBuffer보다 성능이 우수하다.
      따라서 동기화를 고려할 필요가 없는 상황에서는 StirngBuffer보다는 StringBuilder를 사용하는 것이 유리하다.

  • insert :
    insert 메서드는 특정 위치에 원하는 문자열을 삽입할 수 있다.

  • substring :
    substring 메서드는 String 자료형의 substring 메서드와 동일하게 동작한다.
    substring(시작, 끝)와 같이 사용하면 StringBuffer 객체의 시작위치에서 끝위치까지의 문자를 뽑아낸다.(Slicing)

 

public static void main(String[] args) {
			
			/* append */
			// 1. StringBuffer 자료형 사용
			StringBuffer sb = new StringBuffer();	// StringBuffer 객체 sb 생성
			sb.append("Hello");		// append 메서드를 사용하여 문자열 추가
			sb.append(" ");			// append 메서드를 사용하여 문자열 추가
			sb.append("World");		// append 메서드를 사용하여 문자열 추가
			String result = sb.toString();	// toString() 메서드를 이용하여 String 자료형으로 변경
			System.out.println(result);				// Hello World
			
			// 2. 복합연산자를 활용한 문자열 추가
			String result_01 = "";
			result_01 += "Hello";
			result_01 += " ";
			result_01 += "World";
			System.out.println(result_01);			// Hello World
			
			/* 첫번째 예제의 경우 StringBuffer 객체는 한번만 생성됨
			 * 두번째 예제의 경우 String 자료형에 + 연산이 있을 때마다 새로운 String 객체가 생성됨.
			 * (문자열 간 + 연산이 있는 경우 java는 새로운 String 객체를 만들어 낸다.)
			 * 두번째 예제에서는 총 4개의 String 자료형 객체가 만들어진다.
			 * 
			 * String 자료형은 한번 값이 생성되면 그 값을 변경할 수 없다.(immutable)
			 * trim, toUpperCase 등의 메서드를 보면 문자열이 변경되는 것처럼 보이지만,
			 * 해당 메서드 수행시 또 다른 String 객체를 생성하여 return 할 뿐이다.
			 * 
			 * 하지만 StringBuffer는 이와 반대로 값을 변경할 수 있다.(mutable)
			 * 즉, 한번 생성된 값을 언제든지 수정할 수 있다.
			 * 하지만 StringBuffer 자료형은 무거운 편에 속한다.
			 * 
			 * 따라서 문자열 추가나 변경 등의 작업이 많을 경우에는 StringBuffer를,
			 * 문자열 변경 작업이 거의 없는 경우에는 그냥 String을 사용하는 것이 유리하다.
			 *
			 *  
			*/
			
			/* StringBuilder */
			StringBuilder sd = new StringBuilder();
			sd.append("Hello");
			sd.append(" ");
			sd.append("Universe");
			String result_sd = sd.toString();
			System.out.println(result_sd);
			
			
			/* insert */
			StringBuffer si = new StringBuffer();
			si.append("Hello");
			si.insert(0, "Jake");
			System.out.println(si.toString());	// JakeHello
			
			
			/* substring */
			StringBuffer ss = new StringBuffer();
			ss.append("Hello World");
			System.out.println(ss.substring(0, 4));		// Hell
			
		}
728x90
반응형

'Language > Java' 카테고리의 다른 글

Java - List  (0) 2023.03.25
Java - Array  (0) 2023.03.25
Java 자료형 - number, boolean, char, String  (0) 2023.03.24
자바 소스코드 기본 구조  (0) 2023.03.24
자바 주요 특징  (0) 2023.03.24

+ Recent posts