이번 프로젝트에서는 Console의 readLine()만 사용하지만 StringBuilder이나 StringBuffer을 사용하는 경우도 많았기 때문에 추가적인 공부를 했습니다.
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
System.out.println("문자열을 입력하세요:");
String input = scanner.nextLine(); // 입력한 문자열을 읽어옴
System.out.println("입력한 내용: " + input); // 입력한 문자열 출력
scanner.close(); // Scanner 객체 닫기
}
}
위와 같이 Scanner로 인식을 받고 StringBuilder로 취급하는 경우에 대해서 생각해보았습니다.
<aside> 💡
String은 불변의 객체이기 때문에 수정이 불가능하다. 그런데 위의 기능들을 이용하면 새로운 인스턴스를 생성하지 않고 수정하는 것처럼 사용할 수 있다.
가장 중요한 점은 그래서 StringBuffer와 StringBuilder의 차이가 무엇이냐 이다.
이 두 클래스의 차이점은 synchronized 여부
이다. StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서의 동기화를 지원한다.
이와 달리 StringBuilder는 그렇지 않다. 그래도 동기화 관련 문제로 StringBuffer는 StringBuilder에 비해 성능이 조금 좋지 않다.
✅ 따라서 동기화 문제가 전혀 없는 경우에는 StringBuilder를 사용하는 것이 좋다.
<aside> 💡
append()
toString()
reverse()
setLength(0)
insert(int index, String str)
setCharAt(int index, char ch);
deleteCharAt(int index)
replace(int index1, int index2, String str)
delete(int index1, int index2)
✅