数组
1)定义:一组相同类型的数据
2)数组的分类:一维数组、二维数组..
3)一维数组的声明:
a.静态声明:int[] arr={1,2,3,4};
b.动态声明:int[] arr=new int[5];
int[] arr=new int[5]{1,2,3,4,5};
整型数组:默认值0
浮点型数组:默认值0.9
字符类型数组:默认值'\u0000'
boolean型数组:默认值false boolean b =new boolean[2];//{false,false}
引用类型:默认值null String[] str=new String[3];//{null,null,null}
元素:数组中存的数据
长度:创建出来的数组长度都是固定的,不可变
变量名.length
4)元素的访问:元素的下标,从左到右,从0开始到length-1结束
通过下标进行访问:变量名[下标]
5)数组的遍历(从头到尾挨个查看):
a.for循环遍历(取值的时候,下标不能超出界限,也就是下标取值不能比长度大或等于长度)
假设已经定义了一个数组arr
for(int i=0;i<5;i++){
System.out.println(arr[i]);
}
b.for-each循环遍历(此种循环遍历数组,只能从数组的第0位到最后一位进行遍历,不能按照下标位置进行控制)
for-each循环遍历格式:
for(数组类型 变量名称:数组名称){
循环体
}
注意:变量名称代表数组中的每一个元素
6)经典案例:冒泡排序法、选择排序法
7)数组的赋值(元素的替换)
reg:int[] a =new int[5]{0,0,0,0,0};
a[0] = 1;//{1,0,0,0,0}//1会把原来的下标上的元素覆盖掉
a[1] = 3;//{1,3,0,0,0}
a[2] = 5;//{1,3,5,0,0}
a[3] = 7;//{1,3,5,7,0}
a[4] = 9;//{1,3,5,7,9}
8)数组的复制:
系统复制法:把数组A中的元素复制到数组B中
System.arraycopy(p1,p2,p3,p4,p5):
p1:要复制的数组,指A
p2:从A中的哪个索引开始复制
p3:复制到的数组,指B
p4:从B种的哪个索引开始复制
p5:复制多长(个数)
9)数组下标越界异常
当使用的索引超过了0~length-1时,就会报异常 ArrayIndexOutOfBoundsException
10)数组的扩容(缩容)
Arrays.copyOf(p1,p2):
p1:要扩容(缩容)的数组变量
p2:要扩容(缩容)到多长。扩容或缩容后的总长度。此方法有返回值,返回的是一个新数组
11)Arrays.toString(数组变量名):将数组变成字符串