HOWTO · Java

在 Java 中打印变量

本文讨论了在 Java 中打印变量的三种方法。我们还讨论了在 Java 中打印变量的各种方法的优缺点。

本页内容

要打印 Java 变量的值,可以将变量传给 System.out.print()、System.out.println() 或 System.out.printf()。使用 print() 可在当前行继续输出,使用 println() 可结束当前行,需要格式化值时则使用 printf()。这三种方法都会向标准输出写入内容;选择哪一种取决于你希望如何排列文本。

在 Java 中使用 print() 打印变量

System.out 是 System 类提供的标准输出流。它的 print() 方法会写入传入的值,但不会追加换行符。你可以直接传入变量,也可以用 + 运算符组合标签和值。因此,当你希望多个内容显示在同一行时,print() 很实用。

运行以下示例:

本节中的代码以及显示的标签或输出仍为英文。

public class VariablePrintingExample {
  public static void main(String[] args) {
    String productName = "Laptop";
    double price = 899.99;
    int quantity = 3;

    System.out.print("Product: " + productName + ", Price: $" + price + ", Quantity: " + quantity);
    System.out.println();
    System.out.println("Available: " + quantity);
    System.out.printf("Price: $%.2f%n", price);
  }
}
Product: Laptop, Price: $899.99, Quantity: 3
Available: 3
Price: $899.99

提供的运行证据显示,示例成功执行并产生了以下输出。第一次调用写入产品信息但不结束该行;下一次调用则添加换行符。其余调用演示了如何在单独一行输出带标签的值,以及如何将价格格式化为小数点后两位。

print() 必须接收参数。像 System.out.print() 这样的空参调用无法编译,因为 PrintStream 没有无参的 print() 重载。请传入一个值;如果只需要换行,则可以使用无参的 println()。

在 Java 中使用 println() 打印变量

System.out.println(value) 会写入该值,然后转到新的一行。需要将标签或记录分别输出时,可以使用它,让每项内容各占一行。它接受与 print() 相同类型的值,包括字符串、数字和变量。

与 print() 不同,println() 也有无参形式:System.out.println()。它只写入换行符,适合在多个 print() 调用拼出一行内容后使用。每次调用后都会换行,因此连续调用不会接着写在同一行。

例如,将 "Product: " + productName、"Price: $" + price 和 "Quantity: " + quantity 分别传给 println(),每次调用都会输出单独一行。这样可以让值与其标签保持在一起,无需在字符串中插入换行符。

在 Java 中使用 printf() 打印变量

当输出需要特定格式(例如固定的小数位数)时,可以使用 System.out.printf()。它的第一个参数是格式字符串,其中的转换说明符描述后续对应的值。常见的转换符包括:用于字符串的 %s、用于整数的 %d,以及用于浮点数的 %f。例如,%.2f 会将浮点数格式化为小数点后两位。

每个转换说明符都必须有类型兼容的参数。参数不足或类型不兼容会在运行时导致格式化错误;没有对应转换说明符的多余参数则会被忽略。例如,调用 System.out.printf("%d", "three") 不会产生编译时类型错误:Java 会接受这组参数,但由于 %d 无法格式化字符串,运行时格式化会失败。文本应使用 %s,或者给 %d 传入整数。转换说明符缺少对应值时,调用运行也会发生格式化错误。

printf() 不会自动结束当前行。如果需要使用适合当前平台的行分隔符,请在格式字符串中加入 %n。例如,System.out.printf("Price: $%.2f%n", price) 会格式化该值并结束当前行。如果省略 %n,后续写入内容可能继续出现在同一行。

如何选择 print()、println() 和 printf()

如果希望写入一个值后继续在同一行输出,请选择 print()。需要逐行输出,或单独添加换行符时,请选择 println()。如果格式字符串能帮助你控制间距、小数位数或其他转换格式,请选择 printf()。你可以在同一个程序中组合使用这些方法;每次调用都会写入同一个标准输出流。

对于简单的标签和值,使用 print() 或 println() 进行拼接通常更易读。需要重复进行数字格式化时,printf() 可以将布局集中在一个格式字符串中。请确认每个转换说明符都与对应的值匹配;如果格式化后的输出需要结束当前行,请显式添加 %n。没有一种方法在所有任务中都必然更高效;应根据换行行为和格式要求,选择能让结果最清楚的方法。