2024. 4. 20. 20:12ㆍjava
1. StringBuilder의 탄생 배경
String형 객체 s1과 s2라는 객체가 있으면, s1+s2를 실행하면, 새로운 string을 생성한다. 이런 과정이 반복되면, 메모리에 안 좋은 문제를 야기한다. 그래서 나온 것이 StringBuilder와 StringBuffer다.
2.StringBuilder란?
StringBuilder는 문자열과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다.
3. StringBuilder와 StringBuffer의 차이
string 객체는 한번 값이 할당 되면 그 공간은 변하지 않습니다. 하지만, Stringbuilder나 StringBuffer 객체는 한번 값이 할당되더라도 한번 더 다른 값이 할당되면 할당된 공간이 변하는 특성을 갖고 있습니다.
그래서,
StringBuilder는 단일 스레드 환경과 문자열의 추가, 수정, 삭제 등이 빈번히 발생하는 경우이므로,
즉, 속도면에선 StringBuffer 보다 성능이 좋습니다.
StringBuffer 는 멀티 스레드 환경과 문자열의 추가, 수정, 삭제 등이 빈번히 발생하는 경우 이므로
즉, StringBuffer 는 멀티 스레드 환경에서도 안전하게 동작할 수 있습니다.
실제로, 백준 문제를 StringBuilder와 StringBuffer를 이용해서 문제를 풀었습니다.
위에 것이 StringBuffer고, 아래 것이 StringBuilder입니다.
위 아래와의 시간 차이가 많이 나는 것을 볼 수 있습니다.
4.StringBuffer 사용법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String string = br.readLine();
StringBuffer s = new StringBuffer();
s.append(string);
s.append("??!");
System.out.println(s);
5. StringBuilder 사용법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String string = br.readLine();
StringBuilder sb = new StringBuilder();
sb.append(string);
sb.append("??!");
System.out.println(sb);
이 코드를 실행하면 입력 받은 문장(문자열)과 ??!가 합쳐집니다.
두 코드 모두 똑같은 실행 결과를 출력합니다.
6.참고 문서
https://velog.io/@rara_kim/Java-StringBuilder-%EC%82%AC%EC%9A%A9%EB%B2%95
[Java] StringBuilder 사용법
String은 소위 불변(imuutable)객체라고 한다. 즉, String 객체는 한번 생성되면 변경할 수 없다. \+ 연산자를 사용하여 문자열을 열결할 수 있으나,연결할 때마다 새로운 문자열 객체가 생성되고 이전
velog.io
StringBuilder와 StringBuffer는 무슨 차이가 있는가?
Java에서 String 클래스는 불변성을 갖습니다. 그래서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수 있습니다. 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 Stri
velog.io
'java' 카테고리의 다른 글
hasnext()란? - [java] (0) | 2024.04.24 |
---|---|
(JAVA) BufferedWriter (0) | 2024.04.24 |
java Math 클래스 (0) | 2024.04.19 |
BufferReader와 Scanner의 차이 (0) | 2024.04.18 |
(java) charAt란? (0) | 2024.04.15 |