Java输入输出语句详解(附带实例)
所有的 Java 程序会自动加载 java.lang 这个包内的所有类,该包里面有一个名称为 System 的类,前面案例的输出都用到了该类。
System 类代表了当前 Java 程序的运行平台,程序不能创建 System 类的对象。System 类提供了一些类变量和方法,允许直接使用 System 类来调用,分别如下:
在 IDEA 开发工具中,提供了控制台以便代码运行后进行输出,比如要输出一段话,可以直接在 main 函数里编写输出语句,代码编译运行后即可在控制台进行输出打印。
接下来,通过案例来演示输出方法的使用:
在控制台输入数据,可以使用 Scanner 类的对象来实现或由 I/O 来实现。Scanner 类在 java.util 包中,需要在程序前面编写 import java.util.Scanner 来加载该类,这样在程序中就可以直接使用 Scanner 类。
在使用 Scanner 类前,需要使用 new 关键字来创建一个该类的对象,语法格式如下:
接下来,通过案例来演示 Scanner 类的使用:
next() 方法一定要读取到空格、Tab 键和换行字符前的数据,并且不会处理换行字符。如输入“AAA 软件教育”,则 next() 方法只会读取到“AAA”,剩下的字符串“软件教育”会继续保留在内存,但是使用 nextLine() 可以直接读取完字符串“AAA软件教育”。
System 类代表了当前 Java 程序的运行平台,程序不能创建 System 类的对象。System 类提供了一些类变量和方法,允许直接使用 System 类来调用,分别如下:
- out:标准输出,默认输出设备是控制台。
- in:标准输入,默认设备是键盘设备。
- err:标准错误输出,默认输出设备是控制台。
Java控制台输出
System.out 对象的 println()、print()、printf() 和 format() 方法都可以用来输出数据,一般使用 println() 输出后换行的方法比较多,这些方法的使用示例如下:System.out.println(待输出的数据); System.out.print(待输出的数据); System.out.printf(格式化字符串,参数1,参数2...); System.out.format(格式化字符串,参数1,参数2...);printf() 和 format() 方法一般用于格式化输出数据,后面的参数需要符合一定的格式输出。这就需要用到输出格式转换字符,常用的转换字符如下表所示。
转换字符 | 说明 | 转换字符 | 说明 |
---|---|---|---|
%c | 按字符格式 | %s | 按字符串格式 |
%d | 按十进制整型格式 | %b | 按布尔型格式 |
%e | 按科学计数法格式 | %x | 按十六进制格式 |
%f | 按浮点数格式 | %n | 换行 |
%o | 按八进制格式 | %a | 按十六进制浮点数格式 |
%% | 输出 % | %g | 按短浮点数格式 |
%
是转换字符中必要的字符,后面可以加上格式字符来进一步指定输出格式。常见的格式字符如下。
-
-
:有 - 表示左对齐输出,如省略表示右对齐输出。 -
0
:有 0 表示指定空位填 0,如省略表示指定空位不填 0。 -
m.n
:m 指域宽,即对应的输出项在输出设备上所占的字符数。n 指精度,用于说明输出的实数的小数位数。未指定 n 时,隐含的精度为 n = 6。 -
l
或h
:l 对整数指 long 型,对实数指 double 型。h 用于将整型的格式字符修正为 short 型。 -
+
:加入正负号。 -
,
:数值加上千位分割。
在 IDEA 开发工具中,提供了控制台以便代码运行后进行输出,比如要输出一段话,可以直接在 main 函数里编写输出语句,代码编译运行后即可在控制台进行输出打印。
接下来,通过案例来演示输出方法的使用:
public class Demo { public static void main(String[] args) { double a = 8301.678; String s = "欢迎学习Java编程技术"; int i = 8898; System.out.printf("%f%n", a); // "f"表示格式化输出浮点数 System.out.printf("%8.2f%n", a); // "8.2"中的8表示输出的长度,2表示小数点后的位数 System.out.printf("%+8.2f%n", a); // "+"表示输出的数带正负号 System.out.printf("%-8.4f%n", a); // "-"表示输出的数左对齐 System.out.printf("%+-8.3f%n", a); // "+-"表示输出的数带正负号且左对齐 System.out.printf("%d%n", i); // "d"表示输出十进制整数 System.out.printf("%o%n", i); // "o"表示输出八进制整数 System.out.printf("%x%n", i); // "x"表示输出十六进制整数 System.out.printf("%#x%n", i); // "#x"表示输出带有十六进制标志的整数 System.out.printf("%s%n", s); // "s"表示输出字符串 System.out.printf("浮点数:%f,一个整数:%d,一个字符串:%s%n", a, i, s); // 可以输出多个变量,注意顺序 System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x", i, s); } }程序的运行结果如下:
8301.678000
8301.68
+8301.68
8301.6780
+8301.678
8898
21302
22c2
0x22c2
欢迎学习Java编程技术
浮点数:8301.678000,一个整数:8898,一个字符串:欢迎学习Java编程技术
字符串:欢迎学习Java编程技术,8898的十六进制数:0x22c2
Java Scanner获取键盘数据
在前面的学习中,代码中的变量都是在程序中为其赋值的,这时候有些读者可能会比较好奇,难道说变量只能由程序员为其赋值么?当然不是,程序是给用户用的,当然能实现互动,比如我们就可以通过控制键盘来获取数据,从而为程序中的变量进行赋值。在控制台输入数据,可以使用 Scanner 类的对象来实现或由 I/O 来实现。Scanner 类在 java.util 包中,需要在程序前面编写 import java.util.Scanner 来加载该类,这样在程序中就可以直接使用 Scanner 类。
在使用 Scanner 类前,需要使用 new 关键字来创建一个该类的对象,语法格式如下:
Scanner 对象名 = new Scanner(System.in); // 输入参数Scanner 类包含几个常用方法,如下所示:
- next():获取用户输入的字符串,不包含空格、Tab 键和换行字符;
- nextLine():获取输入的整行字符,可以包含空格、Tab 键和换行字符;
- nextInt():获得一个整数,其他类似方法包括 nextByte()、nextDouble() 等,可获得对应类型的数据;
- close():关闭 Scanner 对象。
接下来,通过案例来演示 Scanner 类的使用:
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入您的姓名:"); // 将输入的内容作为字符串类型赋值给变量name String name = input.nextLine(); System.out.println("请输入您的学校:"); // 使用next()方法获取输入数据 String school = input.next(); System.out.println(name + "在" + school + "学习Java"); input.close(); } }程序的运行结果如下:
请输入您的姓名:
张三
请输入您的学校:
AAA软件教育
张三在AAA软件教育学习Java
next() 方法一定要读取到空格、Tab 键和换行字符前的数据,并且不会处理换行字符。如输入“AAA 软件教育”,则 next() 方法只会读取到“AAA”,剩下的字符串“软件教育”会继续保留在内存,但是使用 nextLine() 可以直接读取完字符串“AAA软件教育”。