String은 불변의 객체로 원본 객체를 수정하고 싶은 경우엔 새로운 객체를 생성해야 한다. 따라서 문자열을 자주 수정해야 할 때는 StringBuilder를 사용한다. StringBuilder는 가변의 객체로 원본의 객체를 직접 수정할 수 있다.
public class test {
public static void main(String[] args) {
String a = "abcdHello !!";
a.concat("???");
System.out.println(a); // abcdHello !!
StringBuilder b = new StringBuilder(a);
b.append("???");
System.out.println(b); // abcdHello !!???
}
}
위와 같은 코드에서 a.concat("???")
은 a
에 "???"
을 이어붙인 새로운 String
객체를 생성한다. 따라서 a
객체에는 아무 영향을 끼치지 않는다.
b.append("???")
는 b
에 "???"
을 추가하는 코드로 b
객체의 문자열이 수정된 것을 확인할 수 있다.
StringBuilder 선언
StringBuilder str = new StringBuilder("hello Worlds")
reverse(String s)
: 문자열 뒤집기
StringBuilder str = new StringBuilder("hello Worlds") // sdlroW olleh
append(Stirng s)
: 문자열 추가
System.out.println(str.append(100)); // sdlroW olleh100
System.out.println(str.append("!!!!"));// sdlroW olleh100!!!!
insert(int offset, String s)
: offset 위치에 문자열 추가
System.out.println(str.insert(0,"하이")); // 하이sdlroW olleh100!!!!
replace(int start,int end, String s)
: 특정범위 문자열 대체
System.out.println(str.replace(0,2,"아")); 아sdlroW olleh100!!!!
delete(int start, int end)
: 특정범위 문자열 삭제
System.out.println(str.delete(0,2)); // dlroW olleh100!!!!
subString(int start)
: start부터 끝까지 문자열 반환
subString(int start, int end)
: 특정 범위 문자열 반환
System.out.println(str.substring(0,3)); // dlr
charAt(int index)
: 특정 위치 문자 반환
System.out.println(str.charAt(2)); // r
indexOf(String str)
: 문자열 시작 위치 반환
setCharAt(int index, String s)
: 특정 위치 문자 변경
length()
: 문자열 길이
toString()
: String으로 변환