数组概念:

是一种容器,可以同时存放多个数据值

数组特点:

引用数据类型,类型必须统一,长度不可改变

数组的初始化:

在内存中创建一个数组,并且向其中赋予一些默认值

动态初始化

int[] num=new int[5];
int[] num1=new int[n];//数组长度不要求是常量
  • 1.
  • 2.

动态初始化数组,元素拥有一个默认值

整数类型:0 浮点类型:0.0  字符类型:‘\u0000’

布尔类型:false  引用类型:null

静态初始化

在创建数组的时候,不直接指定数据个数多少,而是直接将具体的数据内容进行指定

数据类型[] 数组名称=new 数据类型[] {元素1,元素2,....}

数据类型[] 数组名称= {元素1,元素2,....}

int []arrayF={1,2,3};
  • 1.

系统将大括号中的具体数值替换默认值

根据内容自动推算长度

数组元素的访问:

数组名[索引]:0~length-1

int []arrayD=new int[]{5,15,25};
System.out.println(arrayD);  //[I@776ec8df
内存地址哈希值
  • 1.
  • 2.
  • 3.

 数组常见错误:

数组越界:如果访问数组元素的时候,索引编号并不存在,那么将会发生数组索引越界异常

空指针异常:数组必须进行new初始化才能使用其中的元素

获取数组的长度:数组名称.length

注意:数组长度不可改变。

int []arrayC=new int [3];//长度为3
arrayC=new int[5];//长度为5
两个数组因为是不同的new,所以有不同的内存空间,但是名字相同
  • 1.
  • 2.
  • 3.

遍历:

for(int i=0;i<array.length;i++){
  array[i];
}
  • 1.
  • 2.
  • 3.

for-each:(增强for)

for(var n:num){
  n;
}
  • 1.
  • 2.
  • 3.

num为数组或实现Iterable接口的类对象

 (当不希望遍历整个集合,或者需要使用下标时,不用增强for)

Arrays工具类的使用:

java.util.Array是一个数组相关的工具类,里面提供了大量的静态方法,用来实现数组常见的操作toString(数组): 数组变成字符串  [1,2,...]

sort(数组):默认升序

使用了优化的快速排序算法

copyof(数组,长度):数组拷贝

fill(数组,a):数组全部赋值a

equals(数组1,数组2):数组12长度相同,对应下标元素相同返回true

数组拷贝:

直接赋值:两个变量引用同一个数组

int[] num1=num2;

copyof:拷贝到一个新数组

int []num1=Array.copyof(num2,num2.length)

(num2长度大于数组长度,默认值;num2长度小于数组长度,截断)