iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
自我挑戰組

從免費網路資源中入門java系列 第 11

【Day11】Java中的 Array 陣列(二):如何列印陣列

  • 分享至 

  • xImage
  •  

System.out.println(Array)無法列印出Array內容?!

錯誤示範:直接列印陣列

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        System.out.println(numbers);
    }
}
// output: [I@1b6d3586

Array 屬於參考資料型態,因此存取陣列時,變數實際上是指向儲存陣列資料的記憶體位址。
使用System.out.println(array) 直接列印一個陣列時,並不會顯示陣列的內容,而是會輸出類似於[I@1b6d3586 的字串。
這是因為 在 Java 中,陣列是一個Object,當你直接將陣列傳遞給 System.out.println() 時,Java 會呼叫這個Object的 toString() 方法。
Object.toString() 預設會回傳一個字串,包含類型名稱與物件的記憶體位址(或物件的雜湊碼)。例如 [I@1b6d3586 中,[I 代表這是一個整數類型的陣列,@1b6d3586 是陣列的記憶體位址。

為了列印完整的Array內容,Java 提供了 Arrays.toString()Arrays.deepToString() 方法來生成一個包含陣列元素的字串,而不是僅僅列印物件的記憶體地址。

Arrays.toString()(一維陣列)
toString()位於 java.util 包內,因此我們需要在程式碼中匯入 java.util.Arrays 才能使用 toString() 方法。
toString() 方法接受一個陣列作為引數,將該陣列轉換為字串並返回。對於整數陣列,toString() 會將陣列中的每個元素轉換為字串,並以預設的格式 [元素1, 元素2, ...] 來呈現。

例如:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(numbers));  // 會列印陣列的內容
    }
}

// output: [1, 2, 3, 4, 5]

Arrays.deepToString()(多維陣列)
當使用 Arrays.toString() 列印多維陣列(如二維或三維陣列)時,它只會將內部的陣列視為Object並輸出記憶體位址,而不會展開列印內部的內容,因此需要使用deepToString()

import java.util.Arrays;

public class PrintArray {
    public static void main(String[] args) {
        int[][] matrix = {{1, 2}, {3, 4}, {5, 6}};
         // 試試使用toString列印多維陣列會發生什麼事
        System.out.println(Arrays.toString(matrix));
        System.out.println(Arrays.deepToString(matrix));
    }
}

// output: [[I@1f32e575, [I@279f2327, [I@2ff4acd0]
// output: [[1, 2], [3, 4], [5, 6]]

上一篇
【Day10】Java中的 Array 陣列(一):如何宣告與遍歷陣列
下一篇
【Day12】Java - Class 類別(二):方法(method)
系列文
從免費網路資源中入門java30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言