Java的输入/输出
• Java 程序中,数据的输入/输出是通过流完成的。
• 流是一种抽象的概念,它为应用程序和各种实际设备之间的数据输入/输出提供了一致性的接口。
• 直观地说,流就是用于处理输入/输出的字节序列或字符序列。
• Java提供了大量的数据流类,编程人员只要使用相应的数据流类API,就可以与相应的设备交换数据。
标准输入流与标准输出流
Java的核心语言包(java.lang)中有
• 标准输入流 System.in,用于处理键盘输入
• 标准输出流 System.out,用于处理控制台输出
− System是系统类,in是System的一个成员,这个成员本身是一个输入流对象,实际处理键盘输入。
− System是系统类,out是System的一个成员,这个成员本身是一个输出流对象,实际处理控制台输出。
简单文本扫描器
• System.in是字节流,读进来的数据都是一个字节一个字节的二进制代码,往往要把它转换成适当类型的数据才好用。
• 可以用一个称作“简单文本扫描器”的对象来完成从System.in的字节流中读出数据并转换成特定类型的数据的操作。
• java.util包中提供了一个 Scanner 类,用它创建的对象就是一个简单文本扫描器。
简单控制台输入的示例程序
这里演示一个从键盘输入数据以及把数据显示到计算机屏幕的程序。
程序运行的时候先在屏幕上提问用户,你的姓名是什么?用户从键盘输入他的姓名后,程序提问你的年龄是多大?
用户输入他的年龄后,计算机在屏幕上打印,某某你好!明年你的年龄将是多少。
import java.util.Scanner;
public class InputTest
{
public static void main(String[] args)
{
Scanner myScanner = new Scanner(System.in);
// get first input
System.out.print("What is your name? ");
String name = myScanner.nextLine();
// get second input
System.out.print("How old are you? ");
int age = myScanner.nextInt();
// display output on console
System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
}
}
Scanner 类是在 java.util 包中定义的所以程序开头用 import 语句把 java.util 包中的 Scanner 类引入到程序中来。
注意, Java 编译器编译源程序的时候会自动把 java.lang 包中的类和接口引入到程序中来,除此之外的其它包都不会自动引入。
如果程序中要用到其它包的类,则需要用 import 语句把相应的类引入到程序中来。
数据的格式化输出
• 数据输出到控制台是一件非常简单的事情,使用标准输出流 System.out 就可以了。
− System.out.print()
− System.out.println()
• 格式化输出
− System.out.printf()
一个数据的格式化输出例子:
public class OutputTest2
{
public static void main(String[] args)
{
double x = 100000.0 / 3.0;
System.out.println("x = " + x);
System.out.printf("x = %8.2f", x);
}
}
// 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 |
% | 百分号 |