String 객체와 메모리
문자열을 다루는 String 클래스(객체)는 데이터가 변하면 메모리 상의 변화가 많아 속도가 느리다
String str = "JAVA";
str = str + "_8";
문자열이 변경되면 기존의 객체를 버리고, 새로운 객체를 메모리에 생성된다
이때, 기존 객체는 GC에 의해서 메모리 회수가 이루어진다. 결과적으로 메모리의 효율성면에서 떨어진다고 볼 수 있다
클래스에서 객체를 생성할 때 new를 사용하지만, String은 기본 자료형처럼 간단하게 쓸 수 있다는 장점이 있다
StringBuffer, StringBuilder
String 클래스의 단점을 보완한 클래스로 데이터가 변경되면 메모리에서 기존 객체를 재활용한다
StringBuffer sf = new StringBuffer("JAVA");
sf.append("_8");
문자열이 변경되면 기존의 객체를 재활용한다.
속도는 StringBuilder가 조금 더 빠르며, 데이터의 안정성은 StringBuffer가 조금 더 좋다
먼저 나온 StringBuffer의 속도를 향상시킨 것이 StringBuilder이다
구현
'Study > Java' 카테고리의 다른 글
[Java] 예외처리 Exception, Error (이것만 알면 된다!!) (0) | 2020.07.04 |
---|---|
[Java] Collections (0) | 2020.07.03 |
[Java] Lambda 람다식 (0) | 2020.07.03 |
[Java] 인터페이스와 추상클래스 (0) | 2020.07.03 |
[Java] 내부(inner) 클래스 & 익명(Anonymous) 클래스 (0) | 2020.07.03 |
댓글