Java中 Scanner和BufferedReader的区别

java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。

java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。

用Scanner和BufferedReader两种方式实现以下场景:
用命令行输入一个数字m,如果m >1 输出小于m的所以质数,包括m自己。

Scanner 例子:

package sjtejcys;  import java.util.Scanner;  public class Primes {     public static void main(String[] args) {         System.out.println("请输入一个数字:");         Scanner sc = new Scanner(System.in);         int m = sc.nextInt();         if(m>1){             if(m ==2)                 System.out.println(m);             else              {                 int j = 0;                 System.out.println(2);                 for(int i = 3;i<=m;i++){                     for(j =2;j<m;j++)                         if(i%j == 0)                             break;                     if(j==i)                         System.out.println(i);                 }                             }         }         sc.close();                  }  }  

BufferedReader 例子:

package sjtejcys;  import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;  public class PrimesBF {     public static void main(String[] args) {         try {             System.out.println("请输入一个数字:");             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));             String str = null;             while ((str = br.readLine()) != null) {                 int m = Integer.parseInt(str);                 if (m > 1) {                     if (m == 2)                         System.out.println(m);                     else {                         int j = 0;                         System.out.println(2);                         for (int i = 3; i <= m; i++) {                             for (j = 2; j < m; j++)                                 if (i % j == 0)                                     break;                             if (j == i)                                 System.out.println(i);                         }                     }                 }             }              br.close();         } catch (IOException e) {             e.printStackTrace();         }      } } 

简单来说:
BufferedReader 是先把数据读到缓存区然后在写到硬盘里
Scanner是直接往硬盘些数据
BufferedReader 的效率比Scanner高

脚本宝典为你提供优质服务
脚本宝典 » Java中 Scanner和BufferedReader的区别

发表评论

提供最优质的资源集合

立即查看 了解详情