基本知识:
- 数组是一种引用类型,不属于基本数据类型,数组的父类是Object类。
- 数组实际上是个容器,可以容纳多个元素
- 数组可以存放基本类型数据,也可以存放引用类型的数据
- 数组是引用类型,故存放在堆当中。
- 如果数组存储的是“java对象”,那么是存储对象的“内存地址”。
- 数组一旦创建,数组长度不可变。
- 所有数组对象都有length属性,用来存放数组的长度。
- java数组中的元素类型统一。
- 数组中的元素内存地址是连续的。
- 数组第一个元素的内存地址,是整个数组的内存地址。
- 数组的每个元素都有下标,最后一个元素的下标是length-1。
- 数组的优点:1.查询效率极高,可以很快查到数组中某个下标的元素。
- 缺点:1.在增加和删除元素的时候,效率很低,需要许多元素进行前移或者后移。(增删最后一个元素不受影响)2.不能存储大数据量,因为很难再内存空间找到一块特别大的连续的内存空间。
- 数组分类:一位数组,二维数组,三维数组,多维数组。。。
数组声明:
int[] array1;
double[] array2;
boolean[] array3;
String[] array4;
一维数组初始化:
静态初始化:
int[] array={100,100,20,50} //当确定数组的元素时采用
动态初始化:
int[] array=new int[5];//初始化5个元素的int类型数组,每个元素的值默认值0;不确定数组的元素,后期赋值
注意:直接传递一个静态数组的操作:例如: new int[]{5,4,85}
在main方法的参数中:String[] args,是用来接收用户输入参数的。JVM调用时传入一个字符串数组。
用户在控制台上输入参数,会被转换为String[] args。例如: java Arrayexmple abc de f
JVM就会将后面的字符串以空格的方式分离,自动放到Srting数组里面。
数组扩容:
先新建一个大数组,然后将小容量的数组拷贝过去。
数组扩容效率较低,尽可能减少数组拷贝。
二维数组:
静态初始化:例如:
int[][] array={{1,2,3},{9,5,8},{5,6,3,2,4},{5,4}}
a[二维数组中的一维数组的下标][一维数组的下标]
a[3][100]表示第4个一维数组的第101个元素。
动态初始化:例如:
int[][] array= new int[3][4];
java.util.Arrays:
Arrays是个工具类,里面的方法都是静态方法。