数组
在程序中可以存储同一种数据类型多个元素的固定容器
特点:
1.数组一旦初始化,大小(长度)是固定不变的
2.在内存中数组所有元素的数据类型必须是相同的
3.数组中的元素个数必须是多个(长度为0或1的数组也可以创建,但是这样数组没有任何意义)
数组的声明
格式:
数据类型[] 数组名
举例:int[] arr
数据类型 数组名[]
举例:int arr[]
数组的初始化
动态初始化
给数组进行初始化赋值操作的过程中,只初始化数组的长度(或大小),不会初始化数组具体的元素值,需要后期手动添加,JVM可以直接获取到数组的长度
格式:
数据类型[] 数组名 = new 数据类型[数组的长度]
解释:new:向JVM申请并开辟内存空间
数组长度:数组中可以存储几个元素值
静态初始化
给数组进行初始化赋值操作的过程中,不会初始化数组的长度,只初始化数组具体的元素值,JVM可以间接获取到数组的长度
格式:
标准版:
数据类型[] 数组名= new 数据类型[]{元素值1,...元素值n}
简化版:
数据类型[] 数组名={元素值1,元素值2,....元素值n}
补充:使用简化版的格式进行数组的初始化操作,JVM的编译器会根据数组名前面的数据类型进行隐式申请和开辟内存空间
注意事项:1.数组使用动态初始化时,数组长度需要控制在0~2^31 -1范围内
2.数组不允许使用动静结合的方式进行初始化操作
3.数组中的元素支持数据类型转换
4.数组初始化简化版不允许先声明后初始化
索引
在程序中针对数组中的元素进行从0开始的累加编号
特点:编号从0开始,一直到数组的长度-1
格式:数组名[索引]
注意:1.通过索引获取数组元素时,不能编写小于0或者大于数组长度-1的值,否则会发生数组越界异常
数组的应用
1.数组的反转
将数组中元素进行对应位置调换
2.数组的排序
冒泡排序:反复求最大值排序
3.可变参数
将方法调用时的实参作为元素进行静态初始化的数组
格式:
数据类型...数组名
注意:1.当方法除了可变参数外,还存在其他的参数时,需要将可变参数放在翻出列表的最后;2.每个方法最多只能有一个可变参数
4.方法传递参数时的特点:
当参数为基本类型时:
1.传递的是参数的数据值
2.形式参数数据值的改变不会影响实际参数的数据值
当参数为引用类型时:
1.传递的是参数的内存地址值
2.形式参数地址值的改变不会影响实际参数的地址值
3.参数的内存地址值不变,形式参数地址值中内容的改变会影响实际参数地址值中的内容
5.数据的动态操作
动态扩容:在数组原来的基础上长度进行+1,并将元素存储到最后一个位置
动态插入:在数组原来的基础上长度进行+1,并将元素存储到指定索引位置
动态删除:在数组原来的基础上长度进行-1,并将指定索引位置上的元素删除