문자열 뒤집기
Public static String reverse(String input){
String output = '';
for(int i = input.length(); i >= 0; i--){
output += input.charAt(i);
}
return output;
}
하지만 위의 함수는 순환문이 호출될 때마다 새로운 String 객체를 만들 것이다.
또한, 반환되는 객체는 불변성을 가지고 있다.
Public static String reverse(String input){
StringBuilder stringBuilder = new StringBuilder();
for (int i = input.length(); i >= 0; i--){
stringBuilder.append(input.charAt(i));
}
return stringBuilder.toString();
}
StringBuilder 혹은, StringBuffer는 호출될 때마다 새로운 객체를 생성해 가변성을 가지는 반환값을 주는 것이 더 효율적일 수 있다. 또한, 순환문이 돌 때마다 새로운 객체를 생성하지 않아도 된다!!
StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다.
String 역시 불변성을 가지기 때문에 멀티 쓰레드 환경에서 안전하다.
StringBuilder는 멀티쓰레드 환경에서 안전하지 못하지만 성능 면에서는 StringBuffer보다 뛰어나다. !