이번 프로젝트에서는 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> 💡

StringBuilder & StringBuffer

String은 불변의 객체이기 때문에 수정이 불가능하다. 그런데 위의 기능들을 이용하면 새로운 인스턴스를 생성하지 않고 수정하는 것처럼 사용할 수 있다.

가장 중요한 점은 그래서 StringBuffer와 StringBuilder의 차이가 무엇이냐 이다.

이 두 클래스의 차이점은 synchronized 여부 이다. StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서의 동기화를 지원한다.

이와 달리 StringBuilder는 그렇지 않다. 그래도 동기화 관련 문제로 StringBuffer는 StringBuilder에 비해 성능이 조금 좋지 않다.

✅ 따라서 동기화 문제가 전혀 없는 경우에는 StringBuilder를 사용하는 것이 좋다.

<aside> 💡

간단한 Method 예시

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)