数组的定义
定义:一种数据类型,内存连续且数据类型相同
一维数组定义的方法
- 穷举法
int [] array = {100,200};
String [] names = new String[]{"Tom","Kate"};
此外,有一种数组的定义需要读者注意
int [] array;
array = {100,200};//不可该方式定义数组,会报错
基于上述定义方式,又另一种不会报错的解决方式
int [] array;
array = new int[] {100,200};
2.指定数组长度定义法
int [] scores = new int[120];//指定长度
scores[119]= 150;
二维数组的定义方式
二维数组的定义方式跟一维数组的定义方式大同小异
int [][] scores = new int[2][3];//{{23,23,34},{23,43,43}};
数组的遍历方式
//数组遍历
int [] array = {100,120};
System.out.println(array[0]);
System.out.println(array[1]);
//遍历方式一
for(int i = 0;i<array.length;i++) {
System.out.println(array[i]);//这一种数组遍历方式是最常见的
}
//遍历方式二
for(int data:array) {
System.out.println(data);//这一种数组遍历方式一定要记住,新定义的数组类型要与原数组类型相同,且两个数组之间有冒号隔开,在数组数组的时候,只需输出新的数组名,不用再输入下标
}
int [] [] scores = {{200,12,3},{123,34,32}};
for(int i = 0;i<scores.length;i++) {
int [] subScores = scores[i];
for(int j = 0;j<subScores.length;j++) {
System.out.println(subScores[j]);
}
}
System.out.println("@@@@@@@@@@@@@@@@");
for(int[] subScores : scores) {
for(int score :subScores) {
System.out.println(score);
}
}
值传递与地址传递
public class Test1 {
public static void main(String[] args) {
int ages = 12;
System.out.println(ages);//输出结果为12
t(ages);
System.out.println(ages);//输出结果为12
int [] scoress = {100};
System.out.println(scoress[0]);//输出结果为100
s(scoress);
System.out.println(scoress[0]);输出结果为0
}
public static void t(int x) {
x=0;
}
public static void s(int [] y) {
y[0]=0;
}
}
为什么会出现以上结果的不同呢?这就跟变量储存的性质有关,ages这个变量储存的是12这个值变量,在使用t这个方法时,x这个变量被赋予0这个值,而ages的值没有发生改变,而scoress这个变量储存的是变量的地址,在使用s这个方法时,地址所指的变量被赋予了新值0,所以相应的scoress也发生了改变,所以输出的值为0。