本质:
“批量”创造相同类型的变量。
创建数组:
动态初始化:int[] arr=new arr[3]{1,2,3};
静态初始化:int[] arr={1,2,3};
使用:
- 获取数组长度:System.out.println(arr.length);
- 访问数组中的元素:System.out.println(arr[1]);
注:1.[ ]按下标读取元素,从0开始。
2.[ ]既可以读取数据,也可以修改数据。
3.如果访问元素超过有效长度[0,length-1],会出现越界异常。
遍历:将数组中的所有元素都访问一遍,不重不漏,一般搭配循环语句
for与for each区别:
for:
for each:
JVM内存:
java虚拟机:重点是存储局部变量表,比如int[] arr
本地方法栈:与java虚拟机作用相似,只不过是存储native方法的局部变量
程序计数器:很小的空间,用于储存下一条程序指令的地址
堆:jvm所管理的最大存储区域,使用new创建的对象都是在堆上保存,比如new int[ ] arr{1,2,3}
方法区:用于储存已被虚拟机加载的类信息,静态变量,即时编译器编译的代码等
理解引用类型:
- 引用类型数组
- 数组是引用类型,数组对象存在堆中,数组变量属于引用类型,存储数组对象的地址信息,指向数组对象
- 数组引用变量存在栈中
- 数组的元素可以看做是数组对象的成员变量(类型全都相同)
- 数组的类型可以是基本类型数组也可以是引用类型数组
- 引用类型数组的初始化
- 引用类型数组new之后每一个元素默认初始值为null
- 如果需要每一个元素都指向具体的对象,需要单独对每一个元素都进行new
- 复合数组
数组的拷贝:
数组拷贝的几种方法:
- System.arraycopy()
- Arrays.copyof()
- arraycopy()
- 数组名.clone()
数组分为深拷贝和浅拷贝:
深拷贝:数组中存放的是简单类型,对拷贝后的数组修改不影响原数组。
浅拷贝:数组中存放的是引用类型,如果是两个引用同时执行一个对象,那么通过一个引用修改一个对象时另一个引用也会受到影响。
注:Arrays的导入包:import.java.util.Arrays(快捷键:alt+enter)。
System.arraycopy()和Arrays.copyof()的区别:
System.arraycopy():是被native修饰的方法。
Arrays.copyof():方法内部调用了System.arraycopy()。
数组转字符串:
数组找最大元素:
数组按顺序查找:
数组奇偶排列:
数组元素取平均值:
数组元素逆序排列:
数组元素冒泡排序:
数组元素的拷贝:
检查有序性:
数组二分法查找: