Java优化控制台输入输出

时间:2022-02-21作者:klpeng分类:IT综合浏览:256评论:0

        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);

		
	}

}

        发现可以进行控制台输入:

Java优化控制台输入输出

二、缓冲流输出

        System.out.println() 用到了PrintWrite类,输出非常方便。但是连接不了BufferedWriter类

         则输出的方法也不再是println()而是write()。write()方法却重载的不多。我们可以在输入的开始加上""表示他是一个字符串。

Java优化控制台输入输出

         另外 ,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();
	}

}

        可以输出:

Java优化控制台输入输出

三、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();
	}

}

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢