如果要用java把一個數組的元素都輸出到控制臺的話,你要怎麼做呢?
是通過一個循環去循環數組中的各個元素,然後輸出嗎?
像不像二維數組
今天我要說的是,可以通過一行代碼就完成這個工作。是一樣什麼樣的代碼呢。
看我下面的代碼吧。
定義了數組之後就只是寫了一行代碼,那這樣能達到輸出數組所有元素這個目的嗎?看一下執行結果就知道了。
是達到我要的目的了。
是不是挺神奇?其實真沒那麼神奇。一起來看看源碼,看看這個Arrays.toString做了什麼吧。
其實他只是替我們做了循環的事情。
那如果是二維數組或者更多維數組的話,從上面源碼來看是無法輸出所有元素了。
試試看。
輸出的是內部數組的內存地址。沒有達到我們想要的效果啊。
那要怎麼辦呢?
不用擔心,java.util.Arrays這個類,又給我們提供了一個方法,就是針對上面這種情況的。是什麼方法呢?看下面的代碼。
這次就達到我們的目的了。
看看這個Arrays.deepToString是怎麼做到的吧。
代碼圖1
代碼圖2
代碼圖3
代碼圖4
代碼方法比較長,分開截了多張圖。代碼圖1中的方法,是我示例代碼調動的方法。在代碼圖1中調用了代碼圖2中定義的方法(代碼圖2、代碼圖3、代碼圖4三張圖整體是一個方法,為了展示方便,分拆成了三張圖。有興趣的朋友可以自己去源碼中查看),在代碼圖3中,可以看到,如果數組元素是列舉的這些類型的數組,則直接調用Arrays.toString。如果數組元素不是列舉的這些類型的數組,則會再調用自身方法(代碼圖2中定義的方法)。這種調用方式叫做遞歸。
就是通過這樣的一個方式達到了輸出多維數組的元素的目標。
java一行代碼輸出數組的所有元素內容就到這裡了。如果大家覺得有必要謝謝遞歸的話,就在評論區裡告訴我。