数组:
1.关于数组的初始化操作:
静态初始化:声明数组的同时赋值,数据类型[] 数组名称 = {元素的内容}
int[ ] arr = {1,2,3,5};
动态初始化:声明时可选赋值
数据类型[] 数组名称 = new 数据类型[4];
int[ ] arr = new int [4]; int[ ] arr = new int [ ]{1,2,3,5};
2.关于数组长度的取得和访问元素
数组长度:arr.length
根据数组的索引来取得数组的元素,索引:0 ~ length-1;
数组索引:相对于第一个元素的长度(偏移量)
由于数组在内存中是顺序存储,一个元素挨着一个元素,所以声明一个数组的时候,只需要保存这个数组的首地址即可。访问数组中任意一个元素x,只需要就算x相对于首地址的偏移量即可。
x地址 = (x-1)*数据类型的大小 + 数组的首地址
内存区域划分:JMM(java内存模型)--6块区域
栈:方法的局部变量(形参,方法中定义的若干变量) - 作用域仅限于方法内部
堆:只要new出来的对象全在堆中存储
引用:只是给对象取了个别名而已,保存的是对象的地址。
对象:new出来的都是对象,实实在在存在的东西
java中有很多关于数组的工具类(Arrays.)
1.将数组转为字符串:Arrays.toString(数组名称).
2.数组拷贝:Arrays.copyOf(原数组名称,拷贝后的新数组长度),从数组的第一个元素开始开始拷贝复制.
深拷贝:拷贝后的数组对象确实是个新的对象,只是将原数组的内容复制给新数组
浅拷贝:实际并没有创建新的数组,只是整了个新的数组引用而已。