📜  java printf 选项卡 - Java (1)

📅  最后修改于: 2023-12-03 14:42:15.772000             🧑  作者: Mango

Java Printf 选项卡

在Java中,printf()方法是一个常用的输出方法,它可以根据所提供的格式字符串(format string)以及参数(arguments)进行格式化输出。通过使用合适的格式控制符(format specifier),我们可以将任意类型的参数(如整数、字符串、浮点数等)以不同的格式输出到控制台或文件中。

基本用法

下面是printf()方法的基本语法:

System.out.printf(format, arguments);

其中,format是一个字符串,它包含了格式控制符以及普通字符,用于描述输出的格式。arguments则是可选的参数列表,它包含了要输出的值。

例如:

int age = 20;
System.out.printf("I am %d years old.", age);

这段代码将会输出:I am 20 years old.

在上面的代码中,%d是一个格式控制符,表示将age变量替换为一个十进制整数。%d是printf中最常用的格式符,它还有很多其他格式符,下面我们会逐一介绍。

格式控制符

下面是printf中常用的格式控制符:

| 格式控制符 | 类型 | 说明 | | ---------- | -------- | -------------- | | %d | 整数 | 十进制整数 | | %o | 整数 | 八进制整数 | | %x | 整数 | 十六进制整数 | | %f | 浮点数 | 十进制浮点数 | | %e | 浮点数 | 科学计数法表示 | | %s | 字符串 | 字符串 | | %b | 布尔值 | true或false |

这些格式控制符可以用于描述不同类型的参数。例如:

int num = 10;
float pi = 3.14159f;
String name = "Alice";
System.out.printf("I have %d apples, the value of pi is %f, and my name is %s.", num, pi, name);
// 输出:I have 10 apples, the value of pi is 3.141590, and my name is Alice.
宽度、精度、标志

printf还支持使用宽度、精度以及标志(flag)控制输出的格式。

宽度

可以通过在格式控制符中添加一个数字,来指定输出字段的宽度。例如:

System.out.printf("I have %5d apples.", 10);
// 输出:I have    10 apples.

在上面的代码中,%5d表示输出一个宽度为5的整数字段。如果实际输出的数字的位数小于5,那么会在左侧添加空格。

精度

可以在浮点数格式控制符中使用.n来指定输出数字的精度。例如:

System.out.printf("The value of pi is %.3f.", 3.14159);
// 输出:The value of pi is 3.142.

在上面的代码中,.3指定输出精度为3位小数。

标志

标志是一些特殊字符,它们可以改变输出的格式。以下是常用的标志:

| 标志 | 说明 | | ---- | ------------------------------ | | - | 左对齐(默认是右对齐) | | + | 显示正号(默认不显示) | | 0 | 数字前面补0(默认补空格) | | # | 替代格式(具体参见后面介绍) |

例如:

System.out.printf("%-10s%-10s%-10s\n", "Name", "Age", "Score");
System.out.printf("%-10s%-10d%-10.2f\n", "Alice", 20, 95.5);
System.out.printf("%-10s%-10d%-10.2f\n", "Bob", 18, 88.0);

输出:

Name      Age       Score     
Alice     20        95.50     
Bob       18        88.00     

在上面的代码中,%-10s表示输出一个左对齐的宽度为10的字符串字段(注意-标志),%10d表示输出一个右对齐的宽度为10的整数字段(默认是右对齐)。\n表示换行。

替代格式

替代格式是标志符#的一种用法,它可以改变输出格式。以下是常用的替代格式:

| 替代格式 | 类型 | 说明 | | -------- | -------- | ------------------------------------------------------------ | | %o | 整数 | 输出一个八进制数,加上前缀0(如017) | | %x | 整数 | 输出一个十六进制数,加上前缀0x(如0xFF) | | %X | 整数 | 输出一个大写十六进制数,加上前缀0X(如0XFF) | | %e | 浮点数 | 输出一个科学计数法表示的浮点数(如1.234500e+03) | | %E | 浮点数 | 同%e,但指数部分大写(如1.234500E+03) | | %g | 浮点数 | 根据数值大小自动选择使用%f%e格式(如1231.2345e+02) | | %G | 浮点数 | 同%g,但指数部分大写 |

例如:

System.out.printf("%#o %#x %#X %#e %#E %#g %#G", 
                  31, 255, 255, 1234.5, 1234.5, 1234.5, 0.00012345);
// 输出:0o37 0xff 0XFF 1.234500e+03 1.234500E+03 1234.5 0.00012345

在上面的代码中,%#o表示输出一个八进制数,加上前缀0%#x表示输出一个小写十六进制数,加上前缀0x%#X表示输出一个大写十六进制数,加上前缀0X%#e%#E表示输出一个带指数记数法的浮点数,指数部分使用小写和大写字母表示。%#g%#G表示根据数值大小自动选择输出格式。

总结

以上就是Java中printf方法的基本用法以及常用的格式控制符和标志。printf方法可以方便地将各种类型的数据格式化输出,同时可以使用标志和替代格式来改变输出的格式,使输出更加灵活、美观。