Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- Apollo
- java11
- 조건문
- graphql
- java
- Docker
- mysql
- redis
- Spring
- bufferdreader
- Mongoose
- 스프링
- 백준알고리즘
- restapi
- 스프링부트
- nodejs
- TCP
- mongodb
- Scanner
- 자바
- MapReduce
- puppeteer
- 서버
- eof
- k8s
- Android
- LangChain
- HTTP
- 프로그래머스
- ai
Archives
- Today
- Total
자라나라 개발머리
[JAVA] BufferdReader read(), readLine() 차이 본문
궁금한 것
read()와 readLine()의 차이는 무엇이고, 왜 readLine()을 쓸까?
실행 코드
package pratice;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int b = br.read();
System.out.println(a);
System.out.println(b);
}
}
실행결과

readLine()은 입력한대로 int형 1이 나왔지만, read()는 int형 49가 반환되었다.
설명 및 정리
read() vs readLine()
1. readLine()는 한 줄 전체를 String으로 리턴한다. 한 줄의 기준은 일반적으로 엔터(개행 문자)다.
2. read()는 하나의 char값을 받으며, char값을 아스키코드로 변환하여 0 - 65535 사이 범위의 int값을 리턴한다. ('가'를 입력하니 아스키코드 44032이 나왔다.)
왜 readLine()을 쓸까?
read()로도 입력받은 숫자 그대로를 리턴 받을 수 있긴 하다. br.read() - 48; 을 해주면 된다. 하지만 코드 직관성이 그다지 뛰어나지 않고, read()는 String까지 받을 수 없는 한계가 있다. 따라서 일반적으로는 readLine()을 사용하여 받는다. readLine()의 장점은 상대적으로 ①코드 직관성이 좋은 것과 ②범용성이 있다는 점이다. 주의할 점은 readLine() 자체로는 String값만 받을 수 있기 때문에, 받고자하는 자료형에 따라 변환시켜주는 과정이 필요하다.
출처
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/BufferedReader.html
BufferedReader (Java SE 11 & JDK 11 )
docs.oracle.com
'Java' 카테고리의 다른 글
| [JAVA 11] EOF 처리 방법 (Scanner, BufferedReader) (0) | 2022.08.08 |
|---|---|
| [JAVA 11] java.util.StringTokenizer 정리 (0) | 2022.08.07 |
| [JAVA] 왜 BufferdReader를 사용할까?/BufferdReader 사용 전후 비교 (0) | 2022.07.11 |
| [JAVA] 조건문(if, switch) (0) | 2022.07.09 |
| [JAVA] 자바 특징/코드 실행 과정/자바 가상 기계(JVM)의 특징 (0) | 2022.07.07 |