JAVA 기초 (29) String클래스, StringBuffer클래스, StringBuilder클래스

코린이서현이·2023년 8월 7일
0

Java

목록 보기
30/46

🙂들어가면서🙂

자바의 문자열클래스에는 String뿐만이 아니라, StringBuffer,StringBuilder이 있다. 

📖 String

String 객체는 한번 생성되면 메모리 공간이 변하지 않는다. +연산자또는 concat메소즈응 통해 문자열을 변경해도 문자열에 값이 변경되는 것이 아닌 새로운 문자열이 할당되는 것이다.

따라서 값을 변경하거나 생성할 때마다 메모리가 낭비된다. 문자열 연산이 많은 경우에 코드의 성능에 문제가 생긴다.

➕ String의 생성방법
문자열을 바로 대입하는 경우는 만들어진 문자열의 주소를 가지지만, new생성자를 이용하면 상수풀에 새로운 문자열을 생성한 뒤 대입하게 된다.

	String str = "text";
	String str_new = new String("text");
   	// 각각의 인스턴스 주소는 다르다.

➕ String의 문자열이 변하지 않는 이유
final char[] 배열을 사용하기 때문에 변경할 수 없다.

📖 StringBuffer

변경가능한 char[]을 가지기 때문에 문자열을 변경하거나 연장할때 기존 메모리를 사용한다. 따라서 메모리 공간 낭비를 줄일 수 있다. 또한 속도도 String보다 빠르다.
각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서도 동기화를 지원한다.

📖 StringBuilder

변경가능한 char[]을 가지기 때문에 문자열을 변경하거나 연장할때 기존 메모리를 사용한다. 따라서 메모리 공간 낭비를 줄일 수 있다. 또한 속도도 String보다 빠르다.
StringBuilder는 동기화를 보장하지 않는다.

🙆짧은 문자열이면 👉 String
🙆멀티 스레드 환경이라면, 스레드에 안전해야한다면 👉 StringBuffer
🙆멀티스레드 프로그램이 아니라면 👉 StringBuilde : 가장 빠르다.

📒 StringBuffer와 StringBuilder을 String으로 형변환

.toString메소드를 이용하면 된다.

🤔마무리하면서🤔

그러면 코테에서는 StringBuilder를 아용해야하나?💭
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글