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。沒有任何一種方法在所有情況下都必然更有效率;請依據換行方式和格式需求,選擇最能清楚呈現結果的方法。