| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 의존주입
- 서비스레이어
- AOP
- @RequestMapping
- 어노테이션
- @RequestParam
- 스프링
- .xml
- 비즈니스레이어
- after-throwing
- c:if
- SpringBoot
- 생성자주입
- @ResponseBody
- MVC
- 바인딩변수
- @Valid
- springjdbc
- jointpoint
- springmvc
- spring
- PointCut
- Model
- produces
- application.properties
- frontController
- @
- gradle
- Java
- 유효성검사
- Today
- Total
메모장
BufferedReader 클래스 본문
버퍼를 이용하는 대표적인 I/O(Input/Output) 클래스다
입력된 데이터를 바로 전달하는 것이 아닌, 버퍼에 저장해두었다가 전달하는 방법이다
scanner 와 비교했을 때,
양이 많을 경우에 하나하나씩 전달하지 않고 버퍼에 한 번에 모아서 전달하는 BufferedReader클래스가 속도면에서 빠르고 효율적이다
버퍼를 사용하는 이유

- 하드디스크는 원래 속도가 엄청 느리다. 또한, 키보드나 모니터와 같은 외부 장치와의 데이터 입출력도 생각보다
시간이 걸리는 작업이다.
- 버퍼링없이 키보드가 눌릴 때 마다 눌린 문자의 정보를 목적지로 바로 이동시키는 것보다, 중간에 메모리 버퍼를 두어 데이터를 한번에 묶어 이동시키는 것이 보다 효율적이고 빠르다.
- 그냥 전송하게 되면 CPU와 성능 갭이 많이 나서 비효율적이다.
예시를 들면 흙을 파서 멀리 있는 언덕에 버리는데, 한 번 삽질할 때마다 가서 버리는 것보다, 수레에 가득 채워서 한번에 나르는 것이 효율적인 것과 같은 이치이다. 다른 예시로는 쓰레기통 하나 담으면 바로 비우는게 아니라 쓰레기통에 꽉차게 되면 한번에 버리는 것 . 즉, 모아뒀다가 한 번에 전송하는 것이 훨씬 효율적!
주요 Method
1-1) int read()
: 스트림으로부터 한 문자를 읽어서 int형으로 리턴 ('3' -> (int)'3' -> 51)
1-2) int read(char[] buf)
: 스트림으로부터 buf의 크기만큼 문자를 읽음. 문자 수 리턴
1-3) int read(char[] buf, int offset, int length)
: 스트림으로부터 buf의 offset 위치에서부터 length 길이만큼 문자를 읽어들임
2) String readLine()
: 스트림으로부터 한 줄을 읽어 문자열로 리턴
3-1) void mark()
: 스트림의 현재위치를 마킹, 차후 reset() 이용하여 마킹위치부터 시작
3-2) void reset()
: 마킹이 있으면 그 위치부터, 없으면 처음부터 다시 시작
4) long skip(int n)
: n개의 문자를 건너 뜀
<사용법>
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int
✔️ 주의점
1️⃣ readLine()시 리턴값을 String으로 고정되기에 String이 아닌 다른타입으로 입력을 받을려면 형변환을 꼭 해주어야한다는 점입니다.
2️⃣예외처리를 꼭 해주어야한다는 점입니다. readLine을 할때마다 try & catch를 활용하여 예외처리를 해주어도 되지만 대개 throws IOException을 통하여 작업합니다.
'JAVA > 개념정리' 카테고리의 다른 글
| JAVA 지역변수 & 전역변수 & 참조변수 정리 (1) | 2024.04.07 |
|---|---|
| 자바 프로퍼티(property) 와 필드(field) (0) | 2024.04.07 |
| 절차지향언어 와 객체 지향언어의 차이 (1) | 2024.04.07 |
| HashMap (0) | 2024.04.07 |
| 데이터 , 스택 , 힙 영역 정리 (0) | 2024.04.07 |