자바기초

StringBuffer

lby132 2021. 9. 23. 22:57

JAVA API중 하나인 String은 new를 생성하지 않고 바로 쓸수 있다 

Application Programming Interface이기 때문이다.

하지만 단점이 있는데 String = "ABC" 여기서 String += "A" 를 추가한다고 하면

메모리에 기존에 있던 ABC와 A를 추가한 ABCA가 같이 존재한다.

추가를 할때마다 계속해서 새로 생성한다는 이야기이다. 그렇기 때문에 메모리 낭비가 많이 심하다.

물론 가비지 컬렉터가 쓰지않는 객체는 자동으로 삭제해주지만 삭제되기 전까지는 메모리를 계속 사용하고 있어서 

왠만하면 StringBuffer를 사용하는 편이 좋다.

stringbuilder도 있지만 그 후로 나온게 StringBuffer이기 때문에 둘이 속도차이는 얼마 나지 않지만 StringBuffer가 조금 더 빠르기 때문에 StringBuffer를 쓰도록 하자.

사용법은

StringBuffer stringBuffer = new StringBuffer("ABC");

stringBuffer.append("B"); // 추가할땐 append를 써서 추가해주면 ABCB가 된다.

문자열을 추가 할 일이 많을땐 stringBuffer를 써주는게 좋다.

 

 

String과 StringBuffer클래스 속도를 비교하는 로직이다

 

public static void main(String[] args) {

 

String a = "A";

long startNum = System.currentTimeMillis();

 

for(int i=1; i<50000; i++) {

a = a + "A";

}

 

long endNum = System.currentTimeMillis();

System.out.println(endNum - startNum);

 

 

 

StringBuffer sb = new StringBuffer("A");

long startNum1 = System.currentTimeMillis();

 

for(int i=0; i<50000; i++) {

sb.append("B");

}

 

long endNum1 = System.currentTimeMillis();

System.out.println(endNum1 - startNum1);

 

}

}

 

결과로는 String은 문자열을 추가하는데 366 millisecond

StringBuffer는 3 millisecond의 시간이 걸렸다.

StringBuffer가 훨씬 빠르다

'자바기초' 카테고리의 다른 글

Set계열 컬렉션  (0) 2021.09.24
컬렉션  (0) 2021.09.24
싱글톤  (0) 2021.09.22
super 키워드와 오버라이드 장점과 단점  (0) 2021.09.19
static 키워드  (0) 2021.09.19