数组学习笔记
数组的定义:
数组是相同类型数据的有序集合。
特点:长度确定,元素类型相同,数组类型任意。
数组是对象,存放于堆中。每个元素相当于该对象的成员变量。
数组声明:
格式:数据类型 [ ] 数组名称;
数组名称 = new 数据类型 [ 数组长度 ] ;
也可合并为:数据类型 [ ] 数组名称 = new 数据类型 [ 数组长度 ] ;
创建引用类型数组时,要先定义相关的类与构造方法,并写明getters,setters。
初始化:
1. 静态初始化
格式:数据类型 [ ] 数组名称 = {内容1,内容2,内容3,...}
引用类型 [ ] 数组名称 = {new 数组名称(内容1),new 数组名称(内容1),...}
2. 动态初始化数组
数组定义与为数组元素分配空间并赋值的操作分开进行。
格式:数据类型 [ ] 数组名称 = new 数据类型 [ 数组长度 ] ;
数组名称 [0] = 内容1;
数组名称 [1] = 内容2;
3.数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。int:0,String:null,boolean:false。
for-each循环:
专门用于读取数组或集合中所有的元素。
格式:for (数据类型 随意变量:数组名称) {
System.out.println(随意变量);
}
数组的拷贝(扩容,删除):
利用arraycopy方法。
格式:static void arraycopy(原数组,开始元素下标,目标数组, 目标开始元素下标,复制长度)
删除的思想是拷贝到自身数组,覆盖原数据。
扩容的基本思想是先建一个更大的数组,再把原数组的内容拷贝进去。
java.util.Arrays类:
1.打印数组元素:Arrays.toString(数组名)
2.对数组进行排序:Arrays.sort(数组名)
3.对有序数组用二分法查找指定元素的索引:Arrays.binarySearch(数组名, 需要查找的内容)
多维数组:
多维数组可以看成以数组为元素的数组。每个数组元素的元素数可以不同。
1.静态初始化:数组类型[ ] [ ] 数组名称 = {{1,2,3 },{ 3,4},{ 4,5,6,7}};(举例)
2.动态初始化:数组类型[ ] [ ] 数组名称 = new 数组类型 [3] [ ](举例)
数组名称[0] = {1,2,3};
数组名称[0] = {3,4};
数组名称[0] = {4,5,6,7};
数组存储表格数据:
Object [ ] 子数组名1 = { };
Object [ ] 子数组名2 = { };
Object [ ] 子数组名3 = { };
Object [ ] [ ] 数组名称 = new Object [3][ ];
数组名称 [0] = 子数组名1;
数组名称 [1] = 子数组名1;
数组名称 [2] = 子数组名1;
打印方法一:System.out.println(Arrays.deepToString(数组名称));
打印方法二:for (Object [ ] 任意变量:数组名称) {
System.out.println(Arrays.toString(任意变量));
}
冒泡排序:
1.基础算法

2.改进算法
基本思路:若某次小循环时发现数组已经排序完成(即不再交换数据),则跳出循环

二分法查找:
注意:进行二分查找前必须先对数组元素进行排序(Arrays.sort)。
基本思想:将给定值key与数组中间位置上元素的关键码(key)比较,如果相等,则检索成功;
若key较小,则在数组前半部分中继续进行二分法检索;
若key较大,则在数组后半部分中继续进行二分法检索。


浙公网安备 33010602011771号