Published 2022. 9. 26. 08:18

연속적인 String의 덧셈에 사용

 

String끼리 더해줄 때 덧셈 연산이 많아진다면 메모리 할당과 해제를 발생시킴

 

 

 

Why?

String 객체는 한 번 생성되면 내용을 바꿀 수 없으므로

하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고,

이전 문자열은 가비지 컬렉터로 들어간다.

이때 문자열의 갯수가 많아질수록 내부적으로 많은 작업이 발생하여 메모리를 많이 차지함.

 

 

 

StringBuilder는 String과 다르게 변경 가능한 문자열을 만들어줌

 

생성자를 통해 생성

append()를 통해 String 추가 가능

 

StringBuilder result = new StringBuilder(); //생성
result.append("I'm ").append("so hungry");
 //String에 StringBuilder를 그대로 넣을 순 없다. -> toString()붙여줘야 함!!!
 String str = result.toString();
 
 //result와 str은 같은 값 출력
 System.out.println(result); //"I'm so hungry"
 System.out.println(str); //"I'm so hungry"

 

 

StringBuilder에는 다음과 같은 메소드가 있다

 

sb.length(); 문자열의 길이를 반환

sb.reverse(); 문자열을 뒤집어 반환

sb.append(""); 문자열 추가

sb.delete(index1,index2) - index1부터 index2까지 문자열 삭제 (sb.delete)

sb.insert(index, " "); index에 문자열 값을 삽입

sb.replace(index1,index2, ""); index1에서 index2를 문자열 값으로 대체

sb.toString();  sb를 문자열로 변환

 

초기화

 sb.delete(0,sb.length);
 sb.setLendth(0);

 

 

코플릿 예제

위와 아래는 같은 반환값을 가짐

// String result = "";
    // for(int i=str.length()-1 ; i>=0; i--){
		// 	result += str.charAt(i);
		// }
		// return result;
		StringBuilder result = new StringBuilder();
		result.append(str).reverse();	
		return result.toString();
복사했습니다!