重点:
数组可以为函数传参,作为传参的对象,必然需要参数合法性判断。不然diamante不够严禁,同时也经不起测试。
画图明晰:
【值传递】 传递的是变量的数值,不管之后做什么操作,之前变量不会受到任何的影响,
【址传递】 传递的是某一个空间的首地址,可以通过这个首地址来控制这个空间。
代码中的【地址】:
规定:内存从第一个字节,到内存的最大值,每一个字节看做一个单元,统一编号
编号从 0 开始 到内存最大值
【注意】
1. 地址通常使用十六进制来表示
2. 地址中比较特殊的是null 内存的编号为0的字节,这个字节受到系统保护,任何的
程序都不能对这个地址进行访问和操作,只能【指向】
3. 通常一个地址是保存在【引用数据类型】变量中(引用数据类型包括:class类,接口【没学到】,Aarray数组)。
二维数组:
int[] arr = new int[N];
int[][] arr = {1, 2, 3, 4, 5};
二维数组的定义格式:
数据类型[][] 数组名 = new 数据类型[n][m];
如:int[][] arr = new int[3][4];创建了3个一维数组,其中每个一维数组内包含4个元素。另一种格式:int[][] arr = {{*,*,*,*},{*,*,*,*},{*,*,*,*}};
使用格式:
数组名[一维下标][二维下标];
System.out.println("arr[" + i + "][" + j + "] = " + arr[i][j]);//打印。使用是就像这里,直接数数组名 [元素][元素]
class DoubleDimensionalArray {//如果一个程序没有class就不能开始运行
public static void main(String[] args) {
/*
数据类型[][] 数据名 = new 数据类型[n][m];
*/
int[][] arr = new int[3][4];//创建了3个一维数组,其中每个一维数组内包含4个元素。
arr[0][0] = 10;//两个坐标确定一个数
System.out.println("arr[0][0] = " + arr[0][0]);//打印的结果是10
int count = 0;//将它设成二维数组定义的值,从0开始,依次递增。
//这里使用二维数组,需要两个for循环嵌套
//外层的for 循环 控制 一维下标
for (int i = 0; i < 3; i++) {//for循环外层空值循环的次数
//内层for 循环 控制 二维下标
for (int j = 0; j < 4; j++) {//内层控制循环的内容
arr[i][j] = count;//0 ~ 11
count++;
}
}
for (int i = 0; i < 3; i++) {
//内层for 循环 控制 二维下标
for (int j = 0; j < 4; j++) {
System.out.println("arr[" + i + "][" + j + "] = " + arr[i][j]);//打印。使用是就像这里,直接数数组名 [元素][元素]