1.内存中的数组
在前面的例子中,插图有点不准确。
创建数组时(与创建字符串时一样),会分配两个单独的内存块:一个用于存储数组(容器)本身,第二个块用于存储其地址的变量。下图代表了这一澄清:
为元素数组分配的内存10
int
和int[]
存储数组地址的变量以绿色int
显示。
int
为了比较,存储值的普通变量199
显示为蓝色。
这有点让人想起在内存中存储字符串,你不觉得吗?
没错,弦乐。就像使用字符串一样,您可以将数组变量赋值给另一个:
代码 | 解释 |
---|---|
|
创建一个元素数组10 int 。将值分配 4 给具有索引的单元格2 。将值分配 9 给具有索引的单元格7 。在 b 变量中,保存变量存储的地址a 。现在 a 并b 指向内存中的同一个数组对象。在带有索引的数组对象的单元格中,写入存储在单元格(存储值)和(存储值)中的值 9 的总和。 2 4 7 9 |
数组对象保留在原来的位置,并且a
和b
变量将相同的地址(引用)存储到相同的对象。看图:
2. 有关使用数组的更多详细信息
您可以创建任何类型的元素数组。为此,只需在类型名称后写上方括号即可。通常,创建数组如下所示:
type[] name = new type[number];
其中type是我们将存储在数组中的元素的类型。Name是我们将用来引用数组的变量的名称,number是数组中的单元格数。
上面的示例是创建数组变量和数组对象的规范形式。实际上,这是两个独立的实体。
您可以从数组对象中单独创建一个数组变量:
type[] name;
name = new type[number];
还有一点并非无关紧要:
例子:
代码 | 解释 |
---|---|
|
n 创建一个元素数组 |
|
创建一个包含203 元素的数组 |
|
|
0..99
显示ArrayIndexOfBoundException
,这意味着索引超出了数组的范围。
3.数组长度
正如您在前面的示例中看到的,您可以自己创建一个数组变量,然后在代码中的某处为其赋值(对数组对象的引用)。你甚至可以这样做:
代码 | 解释 |
---|---|
|
创建一个数组变量,其类型为int[] 如果 a 变量小于10 ,则创建一个元素数组 10 。否则创建一个元素 数组 20 |
现在你还能用这样的数组做什么?你怎么知道里面有多少元素?
为了解决这个问题,数组有一个名为 的特殊属性(变量)length
。您可以使用以下表达式找到数组的长度:
array.length;
这array
是数组变量的名称,length
是数组属性的名称。属性的值length
不能改变:length
属性本身可以赋值给其他变量,但不能赋值给它(如果你试图这样做,程序将无法编译)。
我们可以像这样继续前面的例子:
代码 | 解释 |
---|---|
|
创建一个数组变量,其类型为int[] 如果 a 变量小于10 ,则创建一个元素数组 10 。否则 创建一个 20 元素数组循环遍历数组的所有元素:从 0 到长度array.length - 1 |
4. Java 中关于数组的事实总结
让我们回顾一下我们对数组的了解:
事实 1.数组由许多单元格组成。
事实 2.您可以使用其编号(索引)访问特定单元格。
事实 3.所有细胞都属于同一类型。
事实 4.所有单元格的初始值为 0(如果单元格存储数字)、null
(如果单元格存储对象引用)或false
(如果单元格存储boolean
值)。您将在本章中了解有关默认值的更多信息。
事实 5. String[] list
只是一个变量的声明。这不会创建容器(数组对象)本身。要使用变量,首先需要创建一个数组(容器)并将其赋值给变量。请参见下面的示例。
事实 6.当我们创建一个数组对象(容器)时,我们必须指出它有多大,即它包含多少个单元格。这是通过如下语句完成的new TypeName[n]
:
事实 7.可以使用 属性找到数组的长度.length
。
事实 8.创建数组后,您不能更改其元素的类型或它存储的元素的数量。
代码 | 解释 |
---|---|
|
s 是null list _null |
|
变量list 存储对对象的引用:由10 元素组成的字符串数组。n 是10 |
|
现在 |
|
会抛出一个异常(程序错误),即程序会崩溃。list 存储对的引用null |
|
将产生数组越界异常(程序错误)。 如果 a list 存储10 元素/单元格,则有效索引为:0 1 2 3 4 5 6 7 8 9 —10 元素。 |
GO TO FULL VERSION