본문 바로가기
개발자 :-)/Java

[Java] 문자열 클래스

by 뚜생첨 2022. 9. 4.

1. String 객체의 메모리

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

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

메모리상에 JAVA 라는 문자열이 저장되고 그 시작점 주소를 str이라는 변수가 갖게 됨
근데 JAVA라는 문자열에 _8을 붙이게 되면
기존의 객체를 버리고 메모리상에 JAVA_8을 작성하고 str이 변경된 주소를 갖게 되므로 속도가 느리다!

2. StringBuffer, StringBuilder

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

String 클래스의 단점을 보완한 클래스로 데이터가 변경되면 메모리에서 기존 객체를 재활용한다.
(String은 데이터가 변경될 때 메모리 다른공간에 복사, 변경되므로)
StringBuilder 가 더 빠르고
StringBuffer 가 데이터 안정성은 좋다.
(메모리에 데이터가 들어가고 나올떄 Synchronize(순서대로))
* 최근에는 좀더 빠른 StringBuilder 를 더 선호

728x90
반응형

'개발자 :-) > Java' 카테고리의 다른 글

[Java] 예외처리  (0) 2022.09.04
[Java] Collection  (0) 2022.09.04
[Java] 람다식  (0) 2022.09.04
[Java] 추상클래스  (0) 2022.09.03
[Java] 인터페이스  (0) 2022.09.03

댓글