java.util.scanner 클래스는 기본 데이터 유형 및 문자열을 구문 분석하는 간단한 텍스트 스캔 클래스입니다. 본질적으로 정규식을 사용하여 다른 데이터 유형을 읽습니다.
문자 시퀀스를 효율적으로 읽기 위해 java.io.bufferedReader 클래스는 문자 입력 스트림 및 문자 버퍼에서 텍스트를 읽습니다.
두 클래스의 차이점은 다음과 같습니다.
Nextline ()가 Nextxxx ()에서 사용될 때 스캐너 클래스 사용에 문제가있는 것은 무엇입니까?
다음 코드의 출력을 추측하십시오.
// 스캐너 classimport java.util.scanner를 사용한 코드; 클래스는 {public static void main (String args []) {scner scn = new Scanner (System.in); System.out.println ( "정수 입력"); int a = scn.nextint (); system.out.println ( "String B ="); scn.nextline (); system.out.printf ( "당신은 입력했습니다 :-" + a + "" + "및 이름으로" + b);}}입력:
50
괴짜
산출:
정수를 입력하십시오
문자열을 입력하십시오
당신은 입력했습니다 : -50 및 이름으로
BufferReader 클래스를 사용해보고 동일한 입력을 사용해 보겠습니다.
// bufferedReader classimport java.io를 사용하는 코드*; 클래스는 {public static void main (String args [])가 ioexception {bufferedReader br = new bufferedReader (system.in)); system.out.println ( "integer를 입력"); int a = integer.parseint (br.readline ()); system.out.println ( "문자열 입력"); 문자열 b = br.readline (); system.out.printf ( "당신은 입력 :-" + a + "및 이름으로" + b);}} 입력:
50
괴짜
산출:
정수를 입력하십시오
문자열을 입력하십시오
당신은 입력했습니다 : -50 그리고 이름으로 Geek
스캐너 클래스에서 7 번의 NextXXX () 메소드 후에 NextLine () 메소드를 호출하면 NextLine () 메소드는 콘솔에서 아무것도 읽을 수 없으며이 커서는 콘솔에 들어 가지 않으면이 단계를 건너 뛸 수 있습니다. Nextxxx () 메소드는 이러한 메소드, nextint (), nextfloat (), nextbyte (), nextshort (), nextDouble (), nextLong (), next ()입니다.
BufferReader 클래스에는 그러한 문제가 없습니다. 이 문제는 Scanner 클래스에서만 발생합니다. NextXXX () 메소드는 NewLine 문자 ***를 무시하지만 NextLine ()은 무시하지 않기 때문입니다. NextXXX () 메소드와 NextLine () 메소드 사이에 둘 이상의 NextLine () 메소드를 사용하면이 문제가 발생하지 않습니다. Nextline ()은 Newline 문자를 소비하기 때문입니다. 이 프로그램을 작성하는 올바른 방법 (http://code.geeksforgeeks.org/cerahd)을 참조 할 수 있습니다. 이 문제는 c/c ++의 scanf () 메소드 (http://www.geeksforgeeks.org/problem-with-scanf-where-is-fgetsscanf-after-it/)의 scanf () 메소드와 동일합니다.
기타 차이점 :
• BufferedReader는 동기화를 지원하는 반면 스캐너는 그렇지 않습니다. 멀티 스레드 프로그램을 처리하면 BufferedReader를 사용해야합니다.
• BufferedReader는 스캐너에 비해 충분한 버퍼 메모리를 가지고 있습니다.
• 스캐너에는 버퍼드 리더 (8KB 바이트 버퍼링)에 비해 버퍼 (1KB 문자 버퍼링)가 거의 없지만 충분합니다.
• BufferedReader는 스캐너가 입력 데이터의 클래스 구문 분석을 수행하고 BufferedReader는 단순히 일련의 문자를 읽기 때문에 스캐너보다 약간 빠릅니다.
위의 것은 편집자가 소개 한 Java의 스캐너 클래스와 BufferReader 클래스의 차이점입니다 (매우 상세한). 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!