学习目标:
学完PrintStream(PrintWriter)类之后会发现里面的方法很熟悉
了解一下System类中对于I/O操作的支持
在System类中为了支持I/O操作,设置了三个常量
- err:错误输出
- in:从标准输入设备输入(键盘)
- out:输出到标准输出设备(显示器)
- 错误输出
System.err是PrintStream类对象,此对象专门负责进行错误信息的输出操作。
try
{}catch(Exception e)
{
System.err.println(e);
}
和out输出除了颜色之外没有不同,严格来说和out的功能是完全一样的,之所以这样设计,主要的目的是err是不让用户看见的错误,而out是可以让用户看到的信息,但是现在基本没人去分了
- 信息输出:System.out
专门准备的支持屏幕输出信息的操作对象(此对象由系统负责实例化)。那么可以利用System.out实现简单的输出操作:
利用OutputStream实现屏幕输出:
public static void main(String[] args) throws Exception {//正常工作一定要通过try catch处理
//同样一个父类会根据实例化子类的不同完成的功能不同
OutputStream out = System.out;
out.write("helloworld".getBytes());//屏幕输出
}
另外,需要结合JDK1.8的函数式的功能接口,可以为消费型函数接口做方法引用:
public static void main(String[] args) throws Exception {//正常工作一定要通过try catch处理
Consumer<String> con= System.out ::println;
con.accept("helloworld");
}
在Java系统里,out是实例化好的,不需要显示实例化
- 系统输入:System.in
在任何的语言里面都有一种功能:键盘输入的操作。但是Java本身没有提供,但是在System里面有一个in对象
实现键盘的数据输入:
public static void main(String[] args) throws Exception {//正常工作一定要通过try catch处理
InputStream input=System.in;
byte data[]=new byte[1024];
System.out.println("请输入数据:");
int len = input.read(data);
System.out.println("输入数据为"+new String(data,0,len));
}
除了开始的时候初始化InputStream的类不同之外,没有其他的区别!现在已经实现了键盘数据的输入,但是输入的时候开辟了一个数组,那么如果数组的容量小于输入的长度呢?
如果超过数组长度的数据将不会被保存。实际上,在开发之中,永远不可能知道用户可能输入的数据是多少。所以这种设置输入长度的操作不可能使用。
总结
System类对于I/O的操作实际上并不会过多的使用到,因为唯一可以使用到的只有System.out方法,但是对于此部分你至少应该清楚一点:System.out使用的是PrintStream类对象进行的。