본문 바로가기
Study/Java

[Java] 문자열 클래스(String, StringBuilder, StringBuffer)

by JYHAN 2020. 7. 3.

String 객체와 메모리

문자열을 다루는 String 클래스(객체)는 데이터가 변하면 메모리 상의 변화가 많아 속도가 느리다

String str = "JAVA";
str = str + "_8";

문자열이 변경되면 기존의 객체를 버리고, 새로운 객체를 메모리에 생성된다

이때, 기존 객체는 GC에 의해서 메모리 회수가 이루어진다. 결과적으로 메모리의 효율성면에서 떨어진다고 볼 수 있다

String

클래스에서 객체를 생성할 때 new를 사용하지만, String은 기본 자료형처럼 간단하게 쓸 수 있다는 장점이 있다

 

 

StringBuffer, StringBuilder

String 클래스의 단점을 보완한 클래스로 데이터가 변경되면 메모리에서 기존 객체를 재활용한다

StringBuffer sf = new StringBuffer("JAVA");
sf.append("_8");

문자열이 변경되면 기존의 객체를 재활용한다.

속도StringBuilder가 조금 더 빠르며, 데이터의 안정성StringBuffer가 조금 더 좋다

먼저 나온 StringBuffer의 속도를 향상시킨 것이 StringBuilder이다

StringBuilder & StringBuffer

 

구현

 

댓글