속도 : String <<<<<<<<<<<<<<<<<<<<<< StringBuffer < StringBuilder (빠름)
메모리 : String >>>>>>>>>>>>>>>>>>>>>> StringBuffer = StringBuilder (적음)
객체수 : String >>>>>>>>>>>>>>>>>>>>>> StringBuffer = StringBuilder (적음)
StringBuffer , StringBuilder는 CharSequence 인터페이스를 구현하니까
StringBuilder는 가장 빠르지만 StringBuffer를 써야할 상황도 있다.
Thread-Safety 하지 않아서 쓰레드를 사용한다거나, 사용할지도 모르는 경우에는 StringBuffer를 써야한다.
단일쓰레드에서는 StringBuilder를 사용하면된다.
StringBuilder <-> StringBuffer 변경하려면 여기!!
메모리
StringBuilder가 메모리를 적게 먹는다?
16 -> 34 -> 70 -> 142 이런식으로 2배증가했다가 2바이트 추가된다.
String은 s+= "asd" 했을 때 객체를 계쏙 생성한다.
GC가 계속 일을 해야하니까 CPU도바쁘고 메모리도많이잡아먹고 그런다ㅠ
String s = "asd" + "zxc" ;
이건 컴파일러가
String s = "asdzxc"로 바꿔준다.
성능상 아무 문제안됨
String s = "asd" + n + "zxc" ;
컴파일러가 바꾸지 않는다. (JDK5 미만)
JDK5부터는
String s = (new StringBuilder("asd")).append(i).append("zxc").toString; 로 알아서 바꿔준다.
'Old Posts > Java' 카테고리의 다른 글
StringBuffer -> StringBuilder 어떻게 바뀔까 ? (0) | 2018.02.21 |
---|---|
자바8 .collect(Collectors.joining()) 람다 (0) | 2018.02.09 |
Thread (0) | 2018.01.17 |
Java Grammar ( for better Algorithm ) (0) | 2018.01.14 |
bitmask (0) | 2018.01.13 |