欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Scanner類與BufferReader類的不同點(diǎn)(非常詳細(xì))

 更新時(shí)間:2016年08月17日 11:20:46   作者:crane-yuan  
這篇文章主要介紹了Java中Scanner類與BufferReader類的不同點(diǎn)(非常詳細(xì))的相關(guān)資料,需要的朋友可以參考下

java.util.Scanner類是一個(gè)簡(jiǎn)單的文本掃描類,它可以解析基本數(shù)據(jù)類型和字符串。它本質(zhì)上是使用正則表達(dá)式去讀取不同的數(shù)據(jù)類型。

Java.io.BufferedReader類為了能夠高效的讀取字符序列,從字符輸入流和字符緩沖區(qū)讀取文本。

下面是兩個(gè)類的不同之處:

當(dāng)nextLine()被用在nextXXX()之后,用Scanner類有什么問(wèn)題

嘗試去猜測(cè)下面代碼的輸出內(nèi)容;

// Code using Scanner Class
import java.util.Scanner;
class Differ
{
public static void main(String args[])
{
Scanner scn = new Scanner(System.in);
System.out.println("Enter an integer");
int a = scn.nextInt();
System.out.println("Enter a String");
String b = scn.nextLine();
System.out.printf("You have entered:- "
+ a + " " + "and name as " + b);
}
}

Input:

50
Geek

Output:

Enter an integer
Enter a String
You have entered:- 50 and name as

讓我們嘗試使用BufferReader類,并且使用相同的輸入

// Code using BufferedReader Class
import java.io.*;
class Differ
{
public static void main(String args[])
throws IOException
{
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Enter an integer");
int a = Integer.parseInt(br.readLine());
System.out.println("Enter a String");
String b = br.readLine();
System.out.printf("You have entered:- " + a +
" and name as " + b);
}
}

Input:

50
Geek

Output:

Enter an integer
Enter a String
you have entered:- 50 and name as Geek

在Scanner類中如果我們?cè)谶@任何7個(gè)nextXXX()方法之后調(diào)用nextLine()方法,這nextLine()方法不能夠從控制臺(tái)讀取任何內(nèi)容,并且,這游標(biāo)不會(huì)進(jìn)入控制臺(tái),它將跳過(guò)這一步。這nextXXX()方法是這些方法,nextInt(),nextFloat(), nextByte(), nextShort(), nextDouble(), nextLong(), next()。

在BufferReader類中就沒(méi)有那種問(wèn)題。這種問(wèn)題僅僅出現(xiàn)在Scanner類中,由于nextXXX()方法忽略***換行符***,但是,nextLine()并不忽略它。如果我們?cè)趎extXXX()方法和nextLine()方法之間使用超過(guò)一個(gè)以上的nextLine()方法,這個(gè)問(wèn)題將不會(huì)出現(xiàn)了;因?yàn)閚extLine()把換行符消耗了??梢詤⒖歼@個(gè)程序的正確寫法(http://code.geeksforgeeks.org/CErAhD)。這個(gè)問(wèn)題和C/C++(http://www.geeksforgeeks.org/problem-with-scanf-when-there-is-fgetsgetsscanf-after-it/)中的scanf()方法緊跟gets()方法的問(wèn)題一樣。

其他的不同點(diǎn):

•BufferedReader是支持同步的,而Scanner不支持。如果我們處理多線程程序,BufferedReader應(yīng)當(dāng)使用。

•BufferedReader相對(duì)于Scanner有足夠大的緩沖區(qū)內(nèi)存。

•Scanner有很少的緩沖區(qū)(1KB字符緩沖)相對(duì)于BufferedReader(8KB字節(jié)緩沖),但是這是綽綽有余的。

•BufferedReader相對(duì)于Scanner來(lái)說(shuō)要快一點(diǎn),因?yàn)镾canner對(duì)輸入數(shù)據(jù)進(jìn)行類解析,而BufferedReader只是簡(jiǎn)單地讀取字符序列。

以上所述是小編給大家介紹的Java中Scanner類與BufferReader類的不同點(diǎn)(非常詳細(xì)),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用aop實(shí)現(xiàn)全局異常處理

    使用aop實(shí)現(xiàn)全局異常處理

    這篇文章主要為大家詳細(xì)介紹了使用aop實(shí)現(xiàn)全局異常處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Linux 下通過(guò) java 命令啟動(dòng) jar 包常見(jiàn)方式小結(jié)

    Linux 下通過(guò) java 命令啟動(dòng) jar 包常見(jiàn)方式小結(jié)

    這篇文章主要介紹了Linux 下通過(guò) java 命令啟動(dòng) jar 包常見(jiàn)方式小結(jié),后臺(tái)啟動(dòng)jar包命令大致有五種,每種方式結(jié)合代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2023-12-12
  • 深入理解Java設(shè)計(jì)模式之享元模式

    深入理解Java設(shè)計(jì)模式之享元模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之享元模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • springBoot 過(guò)濾器去除請(qǐng)求參數(shù)前后空格實(shí)例詳解

    springBoot 過(guò)濾器去除請(qǐng)求參數(shù)前后空格實(shí)例詳解

    這篇文章主要為大家介紹了springBoot 過(guò)濾器去除請(qǐng)求參數(shù)前后空格實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java封裝統(tǒng)一的Result Model案例

    Java封裝統(tǒng)一的Result Model案例

    這篇文章主要介紹了Java封裝統(tǒng)一的Result Model案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java數(shù)組與堆棧相關(guān)知識(shí)總結(jié)

    Java數(shù)組與堆棧相關(guān)知識(shí)總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java數(shù)組與堆棧展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 聊一聊SpringBoot服務(wù)監(jiān)控機(jī)制

    聊一聊SpringBoot服務(wù)監(jiān)控機(jī)制

    這篇文章主要介紹了聊一聊SpringBoot服務(wù)監(jiān)控機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java數(shù)據(jù)類型和運(yùn)算符的深入講解

    java數(shù)據(jù)類型和運(yùn)算符的深入講解

    這篇文章主要給大家介紹了關(guān)于java數(shù)據(jù)類型和運(yùn)算符的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MyBatis-plus批量插入的通用方法使用

    MyBatis-plus批量插入的通用方法使用

    mybatis-plus的IService接口默認(rèn)提供saveBatch批量插入,也是唯一一個(gè)默認(rèn)批量插入,在數(shù)據(jù)量不是很大的情況下可以直接使用,本文帶你詳細(xì)了解MyBatis-plus 批量插入的通用方法及使用方法,需要的朋友可以參考一下
    2023-04-04
  • Spring JPA聯(lián)表查詢之OneToMany源碼解析

    Spring JPA聯(lián)表查詢之OneToMany源碼解析

    這篇文章主要為大家介紹了Spring JPA聯(lián)表查詢之OneToMany源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論