next() vs nextLine()
- next()
- 기능
공백(스페이스, 탭, 줄바꿈)을 기준으로 단어 하나를 읽습니다.
공백 이후의 입력은 남아있습니다.
사용 시점
단어 단위의 입력을 읽을 때 적합합니다.
- 특징
입력이 여러 단어로 이루어진 경우, 첫 번째 단어만 반환합니다.
입력 버퍼에 남아 있는 공백 또는 줄바꿈은 무시합니다.
Scanner sc = new Scanner(System.in);
System.out.println("Enter input:");
String input = sc.next(); // "Hello World" 입력 시, input에는 "Hello"만 저장됨.
System.out.println(input); // 출력: Hello
- nextLine()
- 기능
한 줄 전체를 읽습니다.
줄바꿈(\n)을 기준으로 입력을 읽으며, 공백도 포함합니다.
- 사용 시점
여러 단어로 이루어진 한 줄의 입력을 읽을 때 적합합니다.
- 특징
줄바꿈 문자를 기준으로 입력을 가져오기 때문에, 이전에 남아있는 줄바꿈 문자도 읽을 수 있습니다.
입력 버퍼에 남아있는 줄바꿈을 명시적으로 처리해야 할 경우가 있습니다.
Scanner sc = new Scanner(System.in);
System.out.println("Enter input:");
String input = sc.nextLine(); // "Hello World" 입력 시, input에는 "Hello World" 저장됨.
System.out.println(input); // 출력: Hello World
차이점
- 처리 범위의 차이
- next()
공백(스페이스, 탭, 줄바꿈)으로 구분된 단어 하나만 읽습니다.
따라서 처리 범위가 작고, 문자열 처리에 소요되는 시간이 적습니다.
- nextLine()
줄 전체를 읽으며, 공백이나 탭 등도 포함합니다.
읽어야 할 데이터의 양이 많아질 가능성이 높습니다.
- 버퍼 처리
- next()
공백이나 줄바꿈을 기준으로 데이터를 잘라서 반환하기 때문에, 입력 버퍼에 남은 데이터는 이후 메서드에서 처리됩니다.
버퍼 관리가 간단하고 추가 작업이 적습니다.
- nextLine()
줄 전체를 읽으므로, 입력이 길어질수록 버퍼를 처리하는 시간이 더 많이 소요됩니다.
- 사용 시 차이점
next()는 특정 단어만 처리해야 하는 간단한 작업에 적합하며, 입력 크기에 상관없이 빠르게 처리합니다.
nextLine()는 줄 전체를 처리하므로, 문자열의 길이가 길거나 데이터 양이 많을수록 느려질 수 있습니다.