如果希望保存一组有相同类型的数,可以使用数组。
今天天气不错,来复习复习Java数组。
Java中定义数组的语法有两种:
int[] arr;//第一种
int arr[];//第二种
这两种形式上没有区别,使用效果完全一样。
与C、C++不同,Java在定义数组时并不为数组元素分配内存空间,因此[]中无需指定数组元素的个数,也就是数组长度。
所以我们需要先分配内存空间,才能访问数组中的元素。
而想要为数组分配内存空间可以这样:
int[] arr;//定义一个int数组变量arr
arr=new int[3];//为int数组变量arr指定数组元素个数为3,也就时分配内存空间。
也可以这样写:
int[] arr=new int[3];//这样等于在定义int数组变量的时候,为其分配内存空间。
可以在声明数组的同时进行初始化(静态初始化),也可以在声明以后进行初始化(动态初始化)。例如:
//静态初始化
int[] arr=new int[]{1,2,3};
//动态初始化
String[] strArr=new String[3];
strArr[0]="Hello";
strArr[1]="World";
strArr[2]="Hello World";
可以通过下标来引用数组:
arrName[index];
与C、C++不同,Java在数组元素引用要进行越界检查以确保安全性,如果越界,就会抛出数组越界异常(java.lang.ArrayIndexOutOfBoundsException)。
每个数组都有可以拿length属性来得到数组的长度。
【示例】输入任意5个整数,输出它们的和。
public class Demo {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3,4,5};//定义一个int数组类型的变量arr,并为其分配内存空间和初始化
int len=arr.length;//得到arr数组的长度
int total=0;//和
//注意,数组下标从0开始,到len-1结束
for(int i=0;i<=len-1;i++){
total+=arr[i];//求和
System.out.print(arr[i]+" ");//根据下标来输出arr每个变量
}
System.out.println("和为"+total);
}
}
public class Demo {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3,4,5};//定义一个int数组类型的变量arr,并为其分配内存空间和初始化
int len=arr.length;//得到arr数组的长度
//注意,数组下标从0开始,到len-1结束
for(int i=0;i<=len-1;i++){
System.out.print(arr[i]+" ");//根据下标来输出arr每个变量
}
}
}
不过Java为我们提供了增强版的for循环(foreach),专门来遍历数组,语法为:
for( arrayType varName: arrayName ){
// 操作
}
arrayType为数组类型,varName时用来保存当前元素的变量,每次循环这个变量的值都会改变,arrayName为数组名。
int intArray[ ][ ] = { {1,2}, {2,3}, {4,5} };
int a[ ][ ] = new int[2][3];
a[0][0] = 12;
a[0][1] = 34;
// ......
a[1][2] = 93;
Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
例如:
int a[ ][ ] = new int[2][ ];
a[0] = new int[3];
a[1] = new int[5];
几点说明: