数组是存储一组相同数据的容器。数组创建以后,他能存储的元素个数就固定了。数组在栈内存中存储的是数组的地址,堆内存中存储的是真实的数据。可以通过索引下标取出数组中的某个元素。
创建初始化和访问数组
数组创建与访问
数组的创建有两种方式:
int arr[] = {10,11,19,80,10} //直接给数组赋值。
String[] arr = new String[10] //定义数组的长度,可以通过下标赋值。未赋值前显示null
数组的访问:
访问数组中某个元素需要两个部分包括数组的名称和元素的下标arr[index]。元素的下标是从0开始的,所以arr[0]表示数组的第一个元素。如果下标超出数组的长度会报错:java.lang.ArrayIndexOutOfBoundsException
length属性可以获取数组的长度。
length属性
获取数组中最后的元素:arr[arr.length - 1]。
修改元素的方法:直接用新的值覆盖旧的值就可以。arr[0] = 25。此时arr[0]的值就变为25
数组的遍历
我们可以通过for语句循环遍历数组中的元素。
for遍历数组
还可以使用增强for循环遍历数组
增强for循环
item表示数组中的单个值,arr表示要循环遍历的数组。int表示数组的数据类型。
基本数据类型和引用数据类型的区别
区别1
基本数据类型赋值时相当于拷贝,修改新的变量不会改变原来的变量。引用数据类型赋值时,相当于把地址传递给新的值,两个变量共享了一块数据地址,所以更改了新值后,旧的值也会发生改变。基本数据类型和引用数据类型在方法中传参时也会出现这样的问题。
复制一个数组
既然数组无法直接赋值进行拷贝,如何解决这个问题呢?
1.可以定义两个数组,循环遍历需要拷贝的数组,将每个元素添加到新的数组里面。
数组的拷贝
可以看出修改arr2中的元素arr1中的元素并没有发生改变。Arrays.toString(数组名)可以将数组以字符串的形式输出。
2. 直接复制数组,Arrays中的方法copyOf
Arrays.copyOf()
方法中第一个参数为需要拷贝的数组,第二个为新数组的长度。
二维数组
二维数组