Array:
1.java语言中的数组是一种引用数据类型。不属于基本数据类型。数组的父类是Object.
2.数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合)
3.数组当中可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据。
4.数组因为是引用类型,所以数据对象是堆内存当中(数组是存储在堆当中的)。
5.数组当中如果存储的是“Java对象”的话,实际上存储的是对象的“引用”(内存地址)。
6.数组一旦创建,在Java中规定,长度不可变。(数组长度不可变)
7.数组的分类:一维数组,二维数组,三组数组,多维数组,,,(一维数组较多,二维数组偶尔使用)
8.所有的数组对象都有length属性(java自带的),用来获取数组中元素的个数。
9.java中的数组要求数组中元素的类型统一,例:int类型只能存储int 类型
10.数组在内存方面存储的时候,数组中的元素内的内存地址(每一个元素都是有规则的挨着排列的)是连续的。数组实际上是一种简单的数据结构。
11.所有的数组都是拿“第一个小方框的内存地址”作为整个数组对象的内存地址。(数组中首元素的内存地址作为整个数据对象)
12.数组中每一个元素都是有下标的,下标从0开始,以1开始递增。最后一个元素的下标为:length-1
对数组中元素进行“存取”的时候,都需要通过下标来进行。
13.数组的优点:查询/查找/检索某个下标上的元素时效率极高。可以说是查询效率最高的一个数据结构。
检索效率高的原因:①每一个元素的内存地址在空间存储上是连续的。②每一个元素类型相同,所占用空间大小一样。③知道第一个元素内存地址,知道每一个元素占用空间的大小,又知道下标,所以通过一个数学表达式就可以计算出某个下标上元素的内存地址。直接通过内存地址定位元素,所以数组的检索效率是最高的。
缺点:①由于为了保证数组中每个元素的内存地址连续,所以在数组随机删除/增加元素的时候,效率较低,因为随机增删元素会涉及到后面元素统一向前/向后位移的操作。②数组不能存储大数据量,因为很难找到特别大的连续的内存空间。
注意:对于数组中最后一个元素的增删,是没有效率影响的。
14.定义/声明一维数组:
int[] array1;
double[] array2;
boolean[] array3;
String[] array4;
Object[] array5;
15.初始化一个一维数组:静态初始化一维数组、动态初始化一维数组。
静态初始化语法格式:
int[] array={100,210,300,55};
Object[] obj={new bObject(),new bObject(),new bObject()};
动态初始化语法格式:
int[] array=new int[5]; //这里的5表示数组的元素个数;初始化一个5个长度的String类型数组,每个元素默认值0.
String[] names=new String[6]; //初始化6个长度的String类型数组,每个元素默认值null。
16.当创建数组的时候,确定数组中存储哪些具体的元素时,采用静态初始化方式。当创建数组的时候,不确定数组中存储哪些具体的元素时,采用动态初始化方式。
17.一维数组的遍历
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
18.二维数组的静态初始化和动态初始化
静态初始化:
int[][] arr={
{1,3,2,},
{22,34,44,55,},
{4,5,7,8}
};
Object[][] arr={
{new Object(),new Object()},
{new Object(),new Object()},
{new Object(),new Object(),new Object()}
};
动态初始化:
int[][] arr=new int[3][4];
Object[][] arr=new Object[4][4];
Animal[][] arr=new Animal[3][4];
Person[][] arr=new Person[2][3];
....
19.二维数组的遍历
for (int i = 0; i <array.length ; i++) {
for (int j = 0; j <array[i].length ; j++) {
System.out.println(array[i][j]+" ");
}
System.out.println();
}
20.main方法上“String[] args”参数的使用
21.数组的拷贝:system.arraycopy()方法的使用
数组有一个特点:长度一旦确定,不可变。所以数组长度不够的时候,需要扩容,扩容的机制是:新建一个大数组,将小数组中的数组拷贝到大数组,然后小数组对象被垃圾回收。