数组
1 数组定义
数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
2 数组本质
数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
3 数组特点
数组的长度固定,不可更改,使用length属性进行查找。
我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
4 一维数组
一维数组的声明方式:type var[] 或 type[] var
一般使用 type[] var //这是Java中的方法
静态初始化 : type[] var = { value1, value2, value3 }; //声明和赋值必须在一行,否则报错。
静态初始化2: type[] var = new type[]{ value1, value2, value3 }; //静态初始化,但是声明和赋值可以不在一行。区别于上一个静态初始化。
动态初始化 : type[] var = new type[num];
//动态初始化,声明和赋值可以不在一行,初始化数组的长度为num,基本数字数据类型赋值为0,char类型赋值为unicode编码为0的字符 //boolean赋值为false,引用数据类型赋值为null。
无论静态初始化还是动态初始化,一旦初始化完成,数组的长度就确定了。
5 二维数组
二维数组的声明方式:type var[][] 或 type[][] var
静态初始化 : type[][] var = { {value1,value2},{ value3, value4 }}; //声明和赋值必须在一行,否则报错。
静态初始化2: type[] var = new type[]{ {value1,value2},{ value3, value4 }}; //静态初始化,但是声明和赋值可以不在一行。区别于上一个静态初始化。
动态初始化: type[][] var = new type[num][]; // 表示有num个一维数组 //没有初始化内层一维数组。故而不能访问内层元素,因为数组是引用类型,故而var[n]为null
动态初始化2: type[][] var = new type[num1][num2]; //表示有num1个一维数组且每个一维数组的长度为num2
var[0] -> 二维数组的外层元素是 地址值 ,如果是第一种动态初始化直接访问则为null。
var[0][0] -> 二维数组的内层元素是实际值,如果是第一种动态初始化直接访问报错,如果是第二中动态初始化,则和一维数组的一样。0/false/null
6 数组伴随类
Arrays
static List asList()
static int binarySearch(number[] nums, number key);
static T[] copyOf(T[] original, int newLength) 截取说拓宽数组,取新长度
static T[] copyOfRange(T[] t,int from,int to) 截取从指定索引到指定索引
static String deepToString(T[] t) 多维数组转字符串
static String toString(T[] t) 一维数组转字符串
static boolean equals(T[] t1,T[] t2) 判断2者是否相同
static T[] sort(T[] t)
7 数组常见异常
ArrayIndexOutOfBoundsException 数组下标越界异常
NullPointerException 空指针异常
1.数组对象没有初始化就调用
2.二维数组声明,没有给内层的数组定义,就调用
3.数组对象为null时,调用了数组对象自身的方法

浙公网安备 33010602011771号