자라나라 개발머리

[JAVA] BufferdReader read(), readLine() 차이 본문

Java

[JAVA] BufferdReader read(), readLine() 차이

iammindy 2022. 7. 26. 15:35

궁금한 것

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