随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

System系统类:

System类中有三个常量:

标准输出(显示器): public static final PrintStream out;
错误输出: public static final PrintStream err;
标准输入(键盘): public static final InputStream in;

输出的操作:

public class MAIN {
    public static void main(String[] args) {
        try{
            Integer.parseInt("a");
        }catch (Exception e){
            System.out.println("out:" + e);
            System.err.println("err :" + e);
        }
    }
}

 

err 和 out 是同一种类型的,如果是使用的工具进行输出,那么使用 err 进行错误输出 工具会进行红色字体的输出,而 out 则不会;

最早设置两个输出操作的目的是:

  System.out是输出那些用户希望看见的信息;

  System.err是输出那些用户不希望看见的信息。

如果有需要也可以修改输出内容的位置(不要随意去修改,仅供了解):

  修改out的输出位置:public static void setOut(PrintStream out);

  修改err的输出位置:public static void setErr(PrintStream err)。
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class MAIN {
    public static void main(String[] args) throws Exception{
        System.setErr(new PrintStream(new FileOutputStream(new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt")))); // 改变err的输出位置
        try{
            Integer.parseInt("a");
        }catch (Exception e){
            System.out.println("out:" + e);
            System.err.println("err :" + e);    // 输出到文件中
        }
    }
}

 

 System.in 键盘输入流:

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.PrintStream;

public class MAIN {
    public static void main(String[] args) throws Exception{
        InputStream input = System.in;  // 键盘输入流
        System.out.print("请输入:");
        byte[] data = new byte[1024];
        int len = input.read(data); // 读取长度
        System.out.println("内容显示:" + new String(data,0,len));
    }
}

  

这种输入方式是有很大的缺陷的:当数据输入的长度超出接收的长度,那么数据就会显示不全。

例如将接收数组data的1024变为6:

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.PrintStream;

public class MAIN {
    public static void main(String[] args) throws Exception{
        InputStream input = System.in;  // 键盘输入流
        System.out.print("请输入:");
        byte[] data = new byte[6];
        int len = input.read(data); // 读取长度
        System.out.println("内容显示:" + new String(data,0,len));
    }
}

 

 

那么这个输入就可能进行重复的输入流数据接收,而且在接收的时候还有可能会有输入中文的情况,如果处理不当,还可能出现乱码的问题。

所以System.in 只是提供一个标准输入,但是在使用的时候建议还是使用成熟的输入方案。

 

posted on 2022-02-19 15:55  时间完全不够用啊  阅读(66)  评论(0编辑  收藏  举报