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 |
Tags
- 스프링부트
- k8s
- Docker
- 프로그래머스
- 백준알고리즘
- Spring
- Apollo
- Mongoose
- eof
- bufferdreader
- ai
- nodejs
- 자바
- Scanner
- 서버
- Android
- java
- MapReduce
- redis
- graphql
- mongodb
- 조건문
- java11
- restapi
- puppeteer
- LangChain
- mysql
- 스프링
- TCP
- HTTP
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
'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 |