System 系统类
- 在常用 API 中已经涉及到 System 类,详见:Java System 类;
- System 类对 I/O 给予了一定的支持;
- java.lang.System,详见:Class System;
1. System.in
- 系统标准输入 System.in 是一个键盘输入流,是字节输入流 InputStream 类的对象;
- Java 中用它来从键盘中读取数据;
import java.io.InputStream;
public class Test {
public static void main(String[] args) throws Exception {
InputStream input = System.in;
//从键盘接收数据
byte b[] = new byte[5];
//开辟内存空间,用来接收数据
System.out.print("请输入内容:");
int len = input.read(b);
System.out.println("您输入的内容为:" + new String(b, 0, len));
input.close();
}
}
/*
输出
请输入内容:aa
您输入的内容为:aa
*/
- 实现了从键盘接受输入数据,但是需要指定数组的长度,如果不要指定,实现任意长度的数据输入,要用 BufferedReader 类来实现,详见:Java buffered stream 缓冲流;
2. System.out
- 系统标准输出 System.out 是字节打印流 PrintStream 类的对象;
- 在 PrintStream 中定义了一些 print() 和 println() 方法,用来向显示器输出信息;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class Test {
public static void main(String[] args) throws Exception {
File f = new File("c:" + File.separator + "Users\\80626\\Desktop\\1.txt");
Reader input = null;
input = new FileReader(f);
char c[] = new char[1024];
int len = input.read(c);
input.close();
System.out.println("内容为:" + new String(c, 0, len));
}
}
/*
输出
内容为:wqeqw
*/
3. System.err
- System.err 用来实现错误信息的输出,如果程序出现错误,则可以直接用 System.err 输出错误信息;
public class Test {
public static void main(String[] args) {
String str = "hello";
try {
System.out.println(Integer.parseInt(str));
} catch (Exception e) {
System.out.println("System.err 的结果为:");
System.err.println(e);
System.out.println("printStackTrace() 的结果为:");
e.printStackTrace();
System.out.println("System.out 的结果为:");
System.out.println(e);
}
}
}
/*
输出
System.err 的结果为:
java.lang.NumberFormatException: For input string: "hello"
printStackTrace() 的结果为:
java.lang.NumberFormatException: For input string: "hello"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:658)
at java.base/java.lang.Integer.parseInt(Integer.java:776)
at Test.main(Test.java:5)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
System.out 的结果为:
java.lang.NumberFormatException: For input string: "hello"
*/
- 可见 System.err 实际输出与 System.out 一样,但是标记为与 printStackTrace() 一样的错误信息;