数据输入/输出(I/O,Input/Output)是各种高级编程语言需要支持的基本功能之一,真正的交互就应该允许用户在程序运行过程中从外界输入数据到程序中,然后对程序进行处理。最终,在屏幕上显示程序执行结果,或者将执行结果写入到指定的文件中。本文将介绍最基本的交互 —— 控制台输入/输出。
控制台就是由操作系统提供的一个字符界面窗口,在 Windows 系统中,按 Win + R 键打开运行窗口,在运行窗口中输入 cmd 命令打开 DOS 窗口。如下图:

在 JDK1.5之前,从控制台读取输入的方法较复杂,一般是先以行为单位将控制台输入统统作为字符串接收,再进行解析,转换成对应的类型,如:整型、浮点型。
从 JDK1.5 开始引入了 Scanner 类,该类为我们提供了一种接收控制台输入的便捷方式。
例如:使用 Scanner 类接收控制台输入,代码如下:
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
User user = new User();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名:");
// 从控制台接收一个字符串
user.setName(scanner.nextLine());
System.out.println("请输入年龄:");
// 从控台接收一个整数
user.setAge(scanner.nextInt());
System.out.println("请输入你的工资:");
// 从控制台接收一个浮点数
user.setSalary(scanner.nextFloat());
// 输出用户信息
user.show();
}
}
class User {
private String name;
private int age;
private float salary;
public void show() {
System.out.println("姓名:" + this.name +
"年龄:" + this.age +
"工资:" + this.salary + "元");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}运行上面程序,要求用户在控制台逐一输入用户姓名、年龄、工资信息,然后显示输入的信息。输出结果如下:
请输入你的姓名: zhangsan 请输入年龄: 35 请输入你的工资: 17000 姓名:zhangsan年龄:35工资:17000.0元
System.in 作为 InputStream 类的对象实现标准输入,可以调用它的 read 方法来读取键盘数据(InputStream 类将在后续的章节进行介绍)。
例如:使用 Scanner 从 System.in 标准输入读取数据,System.in 就是标准输入。
Scanner scanner = new Scanner(System.in);
System.out 作为 PrintStream 打印流类的的对象实现标准输出,可以调用它的 print、println 或 write 方法来输出各种类型的数据。
print 和 println 的参数完全一样,不同之处在于 println 输出后换行,而 print 不换行。
write 方法用来输出字节数组,在输出时不换行。
例如:
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}上面代码中,使用 System.out 向标准控制台输出了一个字符串“Hello World”。