Array(数组)
数组初始化:
与C语言一样,在内存中创建一个数组,并赋予默认值
注意JAVA的数组声明与c语言格式不一样 ! !
Java是把[ ] 放数组名的前面 ! !
1.动态初始化(在最开始时定义数组长度)
数据类型[ ] 数组名称 = new 数据类型[数组长度];
2.静态初始化(在最开始时指定具体内容)
数据类型[ ] 数组名称= new 数据类型[ ] {元素1, 元素2,...};
数组声明的省略格式(推荐):
1.动态初始化
无省略格式!
强行用只会报错:
2.静态初始化
数据类型[ ] 数组名称 = {元素1, 元素2,...};
注意到非省略格式的初始化可以拆分为两个步骤:
以及
而省略格式就不能这么做!
调用数组元素:
与C语言一样,索引值从0开始,索引值最大值 比数组个数小1。
数组内存
原理:
获取数组长度(元素个数):
使用: 数组名. length
输出:4
数组长度在程序运行期间不可改变:
但是以下情况仍然可以运行:
原理:
实际上只是在堆里创建了两个不同的数组,然后它们依次使用arrayC这个名字。两个数组本身的长度并没有改变。
数组遍历
除了此之外还可以使用不带index的遍历:
Primitive Arrays of Objects
Primitive arrays can store any type of object.
Consider a primitive array holding Books class taype of object.
定义一个Book class(请忽略toString(),其暂时与本例子所表达的思想无关)
然后再主类里定义一个Book型的array并赋值
其结构可参考下图(内容不一样,仅参考结构)
依然可以像普通array那样调用并修改元素值:
注意需要用到new 关键字
这样,第三个元素的值就被修改了。
或者可以利用getter&setter,但需要一项项更改。
将元素直接赋值为null,就可以抹去该元素的值
Can you design an object that stores an array of Book objects?
Why not!
在已有的Book class 基础上(getter&setter省略不截图),
定义一个ArrayOfBookObject class
再定义一个 TheObjectStoresArrayOfBookObject class
Arrays can store any kind of object, including other arrays!
——这也是array of String的思想
2-Dimensional Arrays
声明格式:
逻辑还是与C语言的一样:
2D Arrays 的遍历
Nested Loop:
Without index(foreach)
输出
因为方法返回值不能有多个,所以当我们需要返回多个值时,可以用array作为方法返回值
使用与c语言的function一样