随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

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   时间完全不够用啊  阅读(84)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示