1.Arrays
類
正如我們之前提到的,數組在編程中非常有用且經常使用。
Java 的創建者很快注意到 Java 程序員在使用數組時經常編寫相同的代碼。例如,將數組的一部分複製到另一個數組,用相同的值填充數組的每個單元格的代碼,以方便的格式顯示數組的內容等。
這就是為什麼他們創建了特殊Arrays
類(它的全名是java.util.Arrays
),將最流行的與數組相關的操作放入其中。
它有很多適用於各種場合的方法,但首先我們只考慮其中的 10 種——最簡單和最常用的。
2.Arrays.toString()
我們要看的第一個方法叫做Arrays.toString()
. 但首先,有一點背景。
Java 中的每個數組都有一個toString()
方法,該方法返回“數組的文本表示”。您可以使用以下語句獲取數組的文本表示:
String str = name.toString();
其中name
是數組變量的名稱,str
是將存儲數組的字符串表示形式的變量的名稱。
但是,如果您嘗試使用該方法將數組打印到屏幕上,您很可能會看到如下內容:System.out.println(name)
I@37afeb11
第一個字母I
表示它是一個int
數組,後面的符號@
是數組在內存中的地址。一方面,這正是存儲在數組變量中的信息,但另一方面,我們期望的是不同的,對吧?
我們想查看數組中的值!這正是他們想出這個Arrays.toString()
方法的原因——顯示數組的值。我們這樣稱呼它:
String str = Arrays.toString(name);
例子:
|
該str 變量將包含字符串:
|
|
該str 變量將包含字符串:
|
|
該str 變量將包含字符串:
|
3.Arrays.deepToString()
但是,如果您嘗試將二維數組轉換為字符串(以顯示它)using the Arrays.toString()
方法,您會看到一些熟悉的東西:
[I@37afeb11, I@37afeb21, I@37afeb31]
這都是因為二維數組的單元格存儲了對一維數組的引用。一維數組如何轉換為字符串?正如您在上面看到的那樣。
可以做什麼?我們如何正確顯示一個二維數組呢?
為此,該類Arrays
還有一個特殊的方法—— deepToString()
. 調用它看起來像這樣:
String str = Arrays.deepToString(name);
此方法可以傳遞二維、一維、三維或一般情況下任何維度的數組,並且它將始終顯示數組的元素。
注意:該Arrays.deepToString()
方法不適用於基元的一維數組(例如int[]
)。
例子:
|
該str 變量將包含字符串:
|
|
該str 變量將包含字符串:
|
|
該str 變量將包含字符串:
|
4.Arrays.equals()
我們想出瞭如何在屏幕上顯示數組,但是比較數組呢?
比較字符串,我們有equals
andequalsIgnoreCase
方法,但是數組有什麼方法呢?
好消息是數組有一個equals
方法。壞消息是它不比較數組的內容。數組的方法equals
與運算符做同樣的事情==
——它比較引用。例子:
例子:
|
false (引用不相等) |
|
equals 的方法只是arrays 比較兩個數組的引用。false (引用不相等) |
可以做什麼?我們如何根據內容比較數組?
再次Arrays
來拯救我們,或者更具體地說,它的Arrays.equals()
方法。我們就是這樣稱呼它的:
Arrays.equals(name1, name2)
true
如果數組長度相等且它們的元素相等,則該方法返回。否則,它返回false
。
例子:
|
equals 的方法只是arrays 比較兩個數組的引用。false (引用不相等) |
|
true (內容相同) |
|
false (數組的內容不同) |
5.Arrays.deepEquals()
而且,正如您可能已經猜到的那樣,該Arrays.equals
方法不適用於二維數組:它將二維數組視為一維數組,其元素是一維數組的地址。
因此,為了正確比較多維數組 ( n = 1, 2, 3,...
),他們想出了這個Arrays.deepEquals()
方法。調用它看起來像這樣:
Arrays.deepEquals(name1, name2)
該方法返回true
如果數組長度相等且它們的元素相等。否則,它返回false
. 如果數組內部的元素也是數組,則Arrays.deepEquals()
使用該方法對它們進行比較,依此類推。
例子:
|
equals 的方法只是arrays 比較兩個數組的引用。false (引用不相等) |
|
該Arrays.equals 方法將比較和作為存儲引用的一維數組。它們包含不同的引用。(數組的內容不相等) x1 x2 false |
|
true (內容相同) |
GO TO FULL VERSION