나만의 개발노트

백준 1235 : 학생번호 (java) 본문

[백준]/[Java] 백준

백준 1235 : 학생번호 (java)

노트포미 2023. 9. 8. 23:46

[공부한 개념]

BufferedReader

: 모든 입력을 Char형으로, Buffer를 사용하여 받는다

   *Buffer : 어떤 데이터가 전송 될 때, 일시적으로 저장되는 메모리 영역

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = br.readLine(); //String
int num = Integer.parseInt(br.readLine()); //Int

 

=> 장점 : Scanner 보다 속도가 빠르다

               (하나의 글자에 대해 전달이 아니라 버퍼가 가득 차거나, 개행 문자가 나타나면 한번에 전송함)

               -> 데이터 처리 효율이 높음 (많은 양의 데이터를 처리할 때 유리)

=> 단점

   1. Enter만 경계로 인식함

   2. char형태로 받기에 데이터가 String으로 고정됨 

         -> 데이터 가공이 필요

ex)
int i = Integer.parseInt(br.readLine());

   3. 예외처리를 꼭 해주어야 함 

        : readLine() 할 때마다 try&catch를 활용하여 예외처리

          또는

          throws IOException

         

// 클래스를 import 해야 한다
import java.io.IOException;

// main클래스 옆에 throws IOException 작성
public static void main(String[] args) throws IOException{}

 

BufferedWriter

: System.out.println();과 유사

import java.io.BufferWriter;
import java.io.OutputStreamWriter;

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));  //할당된 버퍼에 값 넣어주기
String s = "abcdefg"  //출력할 문자열
bw.write(s+"\n");  //버퍼에 있는 값 전부 출력
bw.flush();  //남아 있는 데이터를 모두 출력
bw.close();  //스트림을 닫음

 

   *BufferedWriter은 버퍼를 잡아 놓았기 때문에 반드시 flush() / close() 를 호출해 뒤처리를 해주어야 함

(참조) https://m.blog.naver.com/ka28/221850826909 


1st 기록 : 23.09.08(금)