728x90
반응형
StringBuffer를 사용하는 이유
Q. StringBuffer가 뭐고 String 과 무슨 차이가 있어요?
A. 둘다 문자열 만들어줍니다. 차이점은 String은 immutable 객체입니다. StringBuffer는 아닙니다.
Q. 그게 뭔데요
A. String은 immutable(불변적인) 객체입니다. 즉 공간에 한번 잡히면 더이상 그 값이 변하지 않아요.
Q. 이렇게 하면 잘 변하는데요?
Stringtmp = "abcd";
tmp += "efg";
System.out.println(tmp);
A. 그거 내부적으로는 이렇게 진행됩니다.
Stringtmp = "abcd";
tmp = newStringBuffer(tmp).append("efg").toString();
System.out.println(tmp);
계속해서 새로운 StringBuffer 객체를 만들기 때문에 생각보다 비효율적인 방법입니다.
결론 : 문자열 연산이 많고 효율적으로 짜야할 경우는 StringBuffer(또는 StringBuilder)를 사용하세요. 물론 간단한 부분에서는 귀차니즘에 의해 String +=연산으로 해도 괜찮습니다.
실은 jdk 1.5부터는 이게 자동으로 StringBuilder로 바뀌어 연산됩니다.
하지만 왜 String이 비효율적인지는 알아야합니다.
728x90
반응형