String의 단점
서로 다른 문자열 변수 두 개가 있고 그 둘을 더한다고 하자
String str1 = "Hello";
String str2 = "World";
str1 + str2는 "HelloWorld"가 되고 이 둘과는 연관없는 새로운 String 변수에 값이 저장된다.
즉, String 연산은 메모리의 낭비가 일어나기 쉽다(불변immutable 객체의 한계성)
StringBuilder: String의 단점 보완
StringBuilder를 사용하면 추가적인 인스턴스를 생성없이 문자열의 연산을 수행한다.
기존의 데이터를 참조하는 방식인데 이로 인해 문자의 삽입과 삭제가 자유롭다.
하지만 StringBuilder가 곧 String은 아니다. 연산 이후 String으로 변환해주어야 한다(toString()메소드)
StringBuilder sb = new StringBuilder();
StringBuilder의 인스턴스는 위와 같이 만들 수 있다
StringBuilder 사용하기
그러면 어떻게 사용할까? StringBuilder 내부의 메소드를 알아보자
StringBuilder의 메소드 | ||
.length(); | 문자열의 길이를 반환 | sb.length(); |
.reverse(); | 문자열을 뒤집어준다 | sb.reverse(); |
.append(""); | 문자 뒤에 문자열을 추가해준다 | sb.append("!!!"); |
.delete(index1, index2) | index1부터 index2까지 문자열을 삭제한다 | sb.delete(2, 5); |
.insert( index, " "); | index에 문자열 값을 삽입한다 | sb.insert(2, "inserted"); |
.replace(index1, index2, " "); | index1에서 index2를 문자열 값으로 대체 | sb.replace(2, 4, "replaced"); |
.toString(); | StringBuilder을 문자열로 변환 | sb.toString(); |
예제: 응용 부분이 중요하다
StringBuilder sb = new StringBuilder();
sb.append("Hello"); //println 시: Hello
sb.append("World"); //println 시: HelloWorld
sb.delete(2, 5); //println 시: HeWorld
//응용: 메소드를 여러개 붙일 수 있다
sb.append("/n").append("new line");
stringBuilder 초기화
sb.delete(0, sb.length);
sb.setLength(0);
'Study > Java' 카테고리의 다른 글
Java: 배열의 초기값 ( String 배열의 초기값만 왜 null? ) (0) | 2021.10.25 |
---|---|
Java: if문을 더 짧게, 삼항 연산자 (0) | 2021.10.20 |
Java: 소수 표현, 소수 반올림 표기 - format, DecimalFormat (0) | 2021.10.14 |
Java: BufferedReader / Writer와 StringTokenizer의 개념과 이해 (0) | 2021.10.10 |
Java: 아스키코드, Char, String 변환과 응용 (1) | 2021.10.10 |