Java优化控制台输入输出
Java一般使用如下进行控制台输入输出。可以使用缓冲流进行加速 。
使用控制台输入Scanner sc = new Scanner(System.in);
使用控制台输出System.out.println( );
首先我们先查看一下如何转化成缓冲流。输入输出分别用到的是B ufferedReader(),BufferedWriter();
使用缓冲流的实质就是将要输入输出的文本变成System.in 和System.out。
一、缓冲流输入
System.in实质上是 InputStream 类。能够和BufferedReader类就需要一个InputStreamReader类来连接。因为BufferedReader的构造函数没有InputStream类的参数。
如下:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
但是我们发现BufferedReader类提供的方法没有Scanner类读取字符灵活。又发现Scanner的构造方法里面可以传入Readable,刚好BufferedReader的祖父就是Readable。那么就直接将BufferedReader传入Scanner内。如下:
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
代码示例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
int n =sc.nextInt();
System.out.println("输出:"+n);
}
}
发现可以进行控制台输入:
二、缓冲流输出
System.out.println() 用到了PrintWrite类,输出非常方便。但是连接不了BufferedWriter类
则输出的方法也不再是println()而是write()。write()方法却重载的不多。我们可以在输入的开始加上""表示他是一个字符串。
另外 ,BufferedWriter类输出完之后记得要调用flush()方法。不然数据输出不出来。
代码示例:
import java.io.*;
import java.util.Scanner;
public class Test {
static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
int n =sc.nextInt();
out.write("输出为: "+n);
out.flush();
}
}
可以输出:
三、PrintWriter类输出
import java.io.*;
import java.util.Scanner;
public class Test {
static PrintWriter out = new PrintWriter(System.out);
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
int n =sc.nextInt();
out.print("输出为: "+n);
out.flush();
}
}
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。