首页 > 编程笔记 > Java笔记 阅读:34

Java输入输出语句详解(附带实例)

所有的 Java 程序会自动加载 java.lang 这个包内的所有类,该包里面有一个名称为 System 的类,前面案例的输出都用到了该类。

System 类代表了当前 Java 程序的运行平台,程序不能创建 System 类的对象。System 类提供了一些类变量和方法,允许直接使用 System 类来调用,分别如下:

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 按短浮点数格式

%是转换字符中必要的字符,后面可以加上格式字符来进一步指定输出格式。常见的格式字符如下。
在 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

第 7 行代码中,“%8.2f”表示总长度为 8,小数点后 2 位,因为少 1 位,前面补一位空格;第 8 行代码中,“%+8.2f”表示在前面输出 + 号,正好补够 8 位。%f、%n、%d、%x、%s分别对应不同类型的转换字符,可以结合使用,本处不再赘述。

Java Scanner获取键盘数据

在前面的学习中,代码中的变量都是在程序中为其赋值的,这时候有些读者可能会比较好奇,难道说变量只能由程序员为其赋值么?当然不是,程序是给用户用的,当然能实现互动,比如我们就可以通过控制键盘来获取数据,从而为程序中的变量进行赋值。

在控制台输入数据,可以使用 Scanner 类的对象来实现或由 I/O 来实现。Scanner 类在 java.util 包中,需要在程序前面编写 import java.util.Scanner 来加载该类,这样在程序中就可以直接使用 Scanner 类。

在使用 Scanner 类前,需要使用 new 关键字来创建一个该类的对象,语法格式如下:
Scanner 对象名 = new Scanner(System.in);  // 输入参数
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

第 1 行代码使用 import 导入了 java.util.Scanner 类。因为 Scanner 类是引用数据类型,第 5 行代码使用 new 关键字创建了一个 Scanner 类的对象 input。第 13 行代码,使用 close() 方法关闭了 input 对象。

next() 方法一定要读取到空格、Tab 键和换行字符前的数据,并且不会处理换行字符。如输入“AAA 软件教育”,则 next() 方法只会读取到“AAA”,剩下的字符串“软件教育”会继续保留在内存,但是使用 nextLine() 可以直接读取完字符串“AAA软件教育”。

相关文章