끵뀐꿩긘의 여러가지

Java - StringBuilder/StringBuffer 클래스, 메서드 본문

JAVA/자료구조-알고리즘&함수 정리

Java - StringBuilder/StringBuffer 클래스, 메서드

끵뀐꿩긘 2021. 4. 26. 23:29

<String의 한계>

String은 불변(immutable)하기 때문에 값을 변경할 수 없다.

그러므로, .concat이나 +연산을 할 때 기존의 값을 버리고 새로 값을 할당하는 과정을 거친다.

이러한 과정이 반복적으로 일어나면, 속도저하가 심각해진다.

String str = new String("hello"); // String 참조변소 str이 "hello"라는 메모리 영역을 가리킴
str = str + " world"; 
//String 참조변수 str이 "hello world"라는 새로 생긴 메모리 영역을 가리키도록 바뀜
//"hello"가 저장된 메모리 영역은 그대로 있다가 Garbage Collection에 의해 삭제됨

String 클래스는 불변하기 때문에 문자열을 수정하는 시점에 새로운 String 인스턴스가 생성된 것이다.

 

=> 문자열 추가, 수정, 삭제가 빈번하게 일어날 수록 String 클래스는 좋은 성능을 발휘하지 못한다.

 


<가변(mutable)성 클래스 : StringBuffer, StringBuilder>

StringBuffer sb= new StringBuffer("hello"); //StringBuffer 변수 sb가 "hello"라는 메모리 영역을 가리킴
sb.append(" world"); // "hello"라는 메모리 영역이 "hello world"로 바뀌고, sb는 같은 메모리 영역을 가리키고 있음

 

StringBuffer, StringBuilder는 가변성 클래스 이므로, 동일 객체 내에서 문자열을 변경하는것이 가능하다

 

=> 문자열 추가, 수정, 삭제가 빈번하게 일어날때, StringBuffer, StringBuilder 클래스를 사용하여야한다.

 


<StringBuffer와 StringBuilder의 차이>

StringBuffer와 StringBuilder는 동일한 API를 가지고 있지만, StringBuffer는 동기화를 지원하므로, 멀티스레드 환경에서주로 사용한다.

StringBuilder는 동기화를 지원하지 않기 때문에 멀티스레드에서는 적합하지 않지만, 단일쓰레드에서 Stringbuffer보다 더 뛰어난 성능을 나타낸다.

( 출처 -  tuandevnotes.com  )


<StringBuffer/ StringBuilder의 메서드>

java.lang.StringBuilder (문자열) 주요 메소드 [1/2]

codevang.tistory.com/121

 

java.lang.StringBuilder (문자열) 주요 메소드 [1/2]

StringBuilder와 StringBuffer 클래스도 String 클래스와 같이 문자열을 다루는 클래스입니다. 다만, String 클래스가 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값

codevang.tistory.com

java.lang.StringBuilder (문자열) 주요 메소드 [2/2]

codevang.tistory.com/122

 

java.lang.StringBuilder (문자열) 주요 메소드 [2/2]

[ reverse() ] 문자열을 거꾸로 뒤집어줌 package study.first; public class Study { public static void main(String[] args) { StringBuilder a = new StringBuilder("Hello World"); a.reverse(); System.out...

codevang.tistory.com

 

'JAVA > 자료구조-알고리즘&함수 정리' 카테고리의 다른 글

Java - 해시(hash)(2/2)  (0) 2021.05.01
Java - 해시(hash)(1/2)  (0) 2021.05.01
Java - 순열 조합 알고리즘  (0) 2021.04.29
Java - 소수 찾기  (0) 2021.04.28
Java - HashSet 클래스  (0) 2021.04.27
Comments