1.动态参数(不定长参数): 只能作为方法的参数。参数的个数不定。
语法:数据类型...变量名;
(1)不定长参数的变量名可以作为数组来用。
(2)在同一个方法中既有不定长参数也有一般参数,那么不定长参数只能作为方法最后一个参数。
(3)不定长参数可以传数组。
2.二维数组:在二维数组中,开辟一段连续空间,每个空间中存的元素又是一个一维数组。
(1)二维的声明:
数据类型[][] 数组名;(推荐用)
数据类型 数组名[][];
eg:String[][] names1;
String names2[][];
(2)二维数据的空间分配:
数组名=new 数据类型[二维数组的长度][一维数组的长度(可省略)];
数据类型[][] 数组名=new 数据类型[二维数组的长度][一维数组的长度(可省略)];
eg:声明了一个包含5个长度的二维数组,数组中每个空间存了长度为3的一维数组
String[][] names3=new String[5][3];
//声明了一个包含5个长度的二维数组,数组中每个空间的一维数组的长度不固定
String[][] names4=new String[5][];
names4[0]=new String[2];
names4[1]=new String[4];
(3)二维数组的静态赋值:声明和赋值一步完成。
eg://给二维数组进行静态赋值
String[][] names5=new String[][] {{"aa","ab"},{"bb","bc","bd"},{"cc"}};
String[][] names6= {{"qq"},{"wx","wb"}};
(4)二维数组的动态赋值
eg:int[][] names3=new int[2][3];
names3[0][0]=11;
names3[0][1]=22;
names3[0][2]=8;
names3[1][0]=7;
names3[1][1]=9;
names3[1][2]=1;
String[][] names4=new String[2][];
names4[0]=new String[2];
names4[1]=new String[4];
//给二维数组动态赋值
names4[0][0]="小花";
names4[0][1]="小草";
names4[1][0]="小草0";
names4[1][1]="小草1";
names4[1][2]="小草2";
names4[1][3]="小草3";
(5)二维数组的访问:数组名[二维数组中第几个空间下标][一维数组的第几个空间的下标]
eg://访问二维数组
for (int i = 0; i < names3.length; i++) {//外层循环遍历二维数组的空间
for (int j = 0; j < names3[i].length; j++) {
System.out.println(names3[i][j]);
}
}
System.out.println("===============================");
//用增强for循环遍历二维数组
for (int[] n : names3) {
for (int n2: n) {
System.out.println(n2);
}
}
System.out.println("*************************************");
for (int i = 0; i < names3.length; i++) {
System.out.println(Arrays.toString(names3[i]));
}
3.调试方法:
(1)代码调试:按照执行顺序。eg:System.out.println(1);
(2)断点调试:
a.设置断点(在感觉有问题的代码前)
b.启动DeBug调试运行
c.一步一步执行,观察变量,找出逻辑出错的地方。
F5:单步跳入方法里面去执行。
F6:音频跳过执行(只执行这句代码本身)