数组:就是相同类型元素按照一定顺序排列的集合。
特点:1.数组依次存放,使用连续内存。
2.一旦被创建,长度就是确定的。
3.数组的类型可以是基本类型和引用类型。
缺点:添加删除元素效率低
优点:按照索引查找某个元素效率高
声明数组: 数据类型[] 数组名;或者数据类型 数组名[]。
例如:int[] arr; int arr[];
数组的使用:数组就是通过下标进行访问其中的元素,下标从0开始,最大下标是数组的长度-1;
使用new关键字创建数组:数组名=new 数据类型[长度];
如何访问数组中的元素:数组名[下标].
public static void test(){
int []arr;//声明数组
arr= new int[5];//创建数组:数组名=new 数据类型[长度]
arr[0]=1;//给数组赋值,数组从下标为0开始
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[5]=5;
System.out.println("数组的长度"+arr.length);//数组名.length 数组长度
for(int i=0;i<arr.length;i++){
System.out.println("数组中第"+(i+1)"元素是"+arr[i]);
}
}
数组的静态初始化:除了用new关键字产生数组,还可以定义数组的同时就为元素分配的空间单位赋值。
语法:数据类型[] 数组名={元素1,元素2......};
容易出现的异常:ArrayIndexOutOfBoundsException(数组下标越界异常):使用的 数组下标超过最大下标(数组的长度-1)
NullPointerException(空指针异常):试图对空对象进行操作
增强for循环:for-each循环,通过增强循环可以很方便的操作数组和集合。
for(元素类型 变量名:数组或集合){
}
示例:
public static void test1(){
double [] arr ={1.0,2.0,3.0,4.0};//定义数组并赋值
System.out.println("数组的长度为"+arr.length);
System.out.println("普通for循环");
for(int i=0;i<arr.length;i++){
System.out.println("第"+(i+1)+"个元素的值是"+arr[i]);
}
System.out.println("使用for增强循环");
for(double a:arr){
System.out.println(a);
}
}
二维数组:本质是以数组为元素的数组,就是 数组的数组。
语法:数据类型 数组名[][];
int arr [m][n];//定义了一个m行n列的数组 ,类型为int。 下标共有m*n个。
public class test3{
public static void main(String[] args){
int arr[3][4];//定义一个三行四列的数组。 第一维不能为空 。
for(int i=0; i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){//遍历数组
System.out.print(arr[3][4]);
}
System.out.println();
}
}
}