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