[서론]
나는 이제서야 백준을 시작했다.. 처음에 입력값 받는 방법을 몰라 검색했었는데,
Scanner, BufferedReader, BufferedWriter, StringBuilder, StringTokenizer가 눈에 띄는 문법이다. 비슷한 기능을 하지만 왜 코딩테스트에는 BufferedReader를 권장하는 것일까 ? 이번 게시물에서는 기본적인 문법에 대해 설명할 예정입니다
[본론]
1. Scanner
[요약]
java.util 패키지에 들어있다.
띄어쓰기, 개행문자("\n")를 기준으로 값을 인식해 편합니다.
정수, 소수, 문자 데이터도 읽을 수 있고
별도의 예외 처리를 명시하지 않아도 됩니다.
⭐️핵심! 데이터를 입력 받을 때 바로 사용자에게 전송된다 ➡️ 한 문자(공백 or 엔터) 칠 때 마다 전송되어야 한다 ➡️ 시간이 걸린다.
[사용방법]
해당 클래스 import 해서 사용 (java.util.Scanner;)
package src.com.company.day1;
import java.util.Scanner; // Scanner 클래스 임포트
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // System.in으로부터 입력을 받을 Scanner 객체 생성
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine(); // 사용자로부터 한 줄의 문자열 입력 받기
System.out.print("나이를 입력하세요: ");
int age = scanner.nextInt(); // 사용자로부터 정수 입력 받기
// 입력 받은 데이터 출력
System.out.println("당신의 이름은 " + name + "이고, 나이는 " + age + "살입니다.");
scanner.close(); // Scanner 객체 닫기
}
}
이 코드를 실행시켜 보면 콘솔 창에 이렇게 뜹니다,
이름을 입력 후 엔터를 누르면
위에 사진처럼 뜹니다. 나이 입력 후 엔터를 누르면
엄청 기본적인 것이지만 몰랐던 시절도 있었기에.. 정리 차 적어봅니다.
2. BufferedReader()
[요약]
java.io 패키지에 들어있습니다아.. 데이터를 String형식으로만 읽고 가지고 옵니다.
그리고 초큼 귀찮았던 예외처리!
Checked Exception으로 반드시 예외 처리를 명시해야한다.(I/O Exception을 throw하거나 try/catch 해야한다.)
'버퍼'라는 특정한 저장공간이 있는데 데이터를 한번에 읽어 와 버퍼에 보관한 후 데이터를 읽어오는 방식으로 동작하는 클래스 입니다.
➡️ 사용자가 입력한 문자 스트림을 읽는다(문자 데이터를 입출력하기 위한 스트림)
⭐️ (핵심) 그래서 버퍼가 가득 차거나 개행 문자가 나타나면 한번에 전송한다 (시간 절약)
😮💨 궁금했던 점은 단일문자에 대한 처리이다. ? 추후 포스팅을 해 보도록 하겠음
[사용방법]
해당 패키치 import 해서 사용
readLine();메서드 사용 시 Exception 처리 필요
package src.com.company.day1;
import java.io.*;
public class BufferedReaderExample {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
System.out.print("이름을 입력하세요: ");
String name = br.readLine(); // 문자열 입력받기
System.out.print("나이를 입력하세요: ");
int age = Integer.parseInt(br.readLine()); // 나이 입력(string)받고 Integer로 감싸주
//받은 데이터 출력
System.out.println("당신의 이름은 " + name + "이고, 나이는 " + age + "살입니다.");
br.close();
}
}
이 코드를 실행시켜 보면 콘솔창에 이렇게 뜹니다.
이름을 입력 후 엔터를 누르면
나이 입력 후 엔터를 누르면
이것만 보면 Scanner와 차이가 없을 것 같은데...
뭐가 어떻게 다르길래 실행시간이 차이가 날까 ?
2편에 계속 작성하도록 하겠다
[티저]
Scanner를 썼을 때 걸린 시간
BufferedReader()를 썼을 때 걸린 시간
'프로그래밍 > 자바' 카테고리의 다른 글
[JAVA] 자바는 call by value다.. (0) | 2024.05.24 |
---|---|
[자료구조] Stack, Queue, Deque (1) | 2024.04.04 |
[JAVA] Scanner vs BufferedReader(),(BufferedWriter) 코딩테스트 무엇을 쓰는게 좋을까 (2)? (0) | 2024.03.27 |