Java的输入/输出

• Java 程序中,数据的输入/输出是通过流完成的。
• 流是一种抽象的概念,它为应用程序和各种实际设备之间的数据输入/输出提供了一致性的接口。
• 直观地说,流就是用于处理输入/输出的字节序列或字符序列。
• Java提供了大量的数据流类,编程人员只要使用相应的数据流类API,就可以与相应的设备交换数据。

标准输入流与标准输出流

Java的核心语言包(java.lang)中有
• 标准输入流 System.in,用于处理键盘输入
• 标准输出流 System.out,用于处理控制台输出

− System是系统类,in是System的一个成员,这个成员本身是一个输入流对象,实际处理键盘输入。
− System是系统类,out是System的一个成员,这个成员本身是一个输出流对象,实际处理控制台输出。

简单文本扫描器

• System.in是字节流,读进来的数据都是一个字节一个字节的二进制代码,往往要把它转换成适当类型的数据才好用。
• 可以用一个称作“简单文本扫描器”的对象来完成从System.in的字节流中读出数据并转换成特定类型的数据的操作。
• java.util包中提供了一个 Scanner 类,用它创建的对象就是一个简单文本扫描器。

简单控制台输入的示例程序

这里演示一个从键盘输入数据以及把数据显示到计算机屏幕的程序。
程序运行的时候先在屏幕上提问用户,你的姓名是什么?用户从键盘输入他的姓名后,程序提问你的年龄是多大?
用户输入他的年龄后,计算机在屏幕上打印,某某你好!明年你的年龄将是多少。

  1. import java.util.Scanner;
  2. public class InputTest
  3. {
  4. public static void main(String[] args)
  5. {
  6. Scanner myScanner = new Scanner(System.in);
  7. // get first input
  8. System.out.print("What is your name? ");
  9. String name = myScanner.nextLine();
  10. // get second input
  11. System.out.print("How old are you? ");
  12. int age = myScanner.nextInt();
  13. // display output on console
  14. System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
  15. }
  16. }

Scanner 类是在 java.util 包中定义的所以程序开头用 import 语句把 java.util 包中的 Scanner 类引入到程序中来。
注意, Java 编译器编译源程序的时候会自动把 java.lang 包中的类和接口引入到程序中来,除此之外的其它包都不会自动引入。
如果程序中要用到其它包的类,则需要用 import 语句把相应的类引入到程序中来。

数据的格式化输出

• 数据输出到控制台是一件非常简单的事情,使用标准输出流 System.out 就可以了。
− System.out.print()
− System.out.println()
• 格式化输出
− System.out.printf()
一个数据的格式化输出例子:

  1. public class OutputTest2
  2. {
  3. public static void main(String[] args)
  4. {
  5. double x = 100000.0 / 3.0;
  6. System.out.println("x = " + x);
  7. System.out.printf("x = %8.2f", x);
  8. }
  9. }
  10. // x = 33333.333333333336 x = 33333.33

是使用System.out.printf()输出变量x的值,输出结果保留两位小数。
这里使用了两个参数,前一个”x = %8.2f” 是格式字符串,它包含一个格式说明符%8.2f。
后面一个是参数列表,这里参数列表只有一个参数x。
输出的时候是把 x 的值按照格式说明符要求的格式插入到格式字符串中,然后把转换之后的文本输出到控制台。
下面的表2-1列出了一些常用的格式说明符。

格式说明符 类型 例子
D 十进制整数 159
X 十六进制整数 9f
O 八进制整数 237
F 浮点数 15.9
E 科学计数法形式浮点数 1.59e+01
S 字符串 Hello
C 字符 H
B 布尔值 true
Tc 完整的日期和时间 星期五 四月 24 12:32:37 CST 2009
% 百分号