Java - 数组
主要内容:
* 一维数组的声明和初始化。
* 数组元素的引用。
* 二维数组的声明和使用。
* 数组拷贝。
数组概述:
* 数组可以看成是多个相同类型数据的组合,对这些数据的统一管理。
* 数组变量属于引用数据类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
* 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
数组初始化:
* 动态初始化:也就说数组定义与为数组元素分配空间和赋值的操作分开进行,例如:( int[] a; a = new int[3]; a[0] = 3; a[1] = 9; a[2] = 8; )。
* 静态初始化:也就说在定义数组的同时就为数组元素分配空间并赋值,例如:( int[] a = {3, 9, 8}; )。
数组元素的初始化:
* 因为数组变量本身属于引用数据类型变量,即 new 出来的东西也存在 heap 中,故数组元素的初始化与成员变量的初始化规则一样(即:基础数据类型自动初始化,引用数据类型为 null,需要实例化。)
二维数组:
* 二维数组可以看成以数组为元素的数组。例:int[][] a = { { 1, 2 }, { 3, 4, 5, 6 }, { 7, 8, 9 } };
* Java 中多维数组的声明和初始化应按从高维到低维(也就是从左到右)的顺序进行,例如:
int[][] a = new int[ 3 ][];
a[ 0 ] = new int[ 3 ];
a[ 1 ] = new int[ 4 ];
a[ 2 ] = new int[ 3 ];
int[][] t = new int[][ 4 ];//这是非法的
数组的拷贝:
* 使用 java.lang.System 类的静态方法:
public static void arraycopy( Object src, int srcPos, Object dest, int destPos, int length )
解释:可以用于数组 src 从第 srcPos 下标项元素开始的 length 个元素拷贝到 dest 数组中从 destPos 下标元素开始的 length 个位置。
注意:拷贝时,如果超过了目标数组 dest 的边界,则会抛出 IndexOutOfBoundsException 异常。(也就说首先必须满足条件:length <= dest.length & length <= dest.length - destPos)
总结:
* 数组的内存布局
* 常见算法
** 排序
*** 选择
*** 冒泡
** 查找(注:必须是在排好序的基础上才能进行查找算法)
*** 折半(二分)