Java语言基础(4)

二维数组

1.定义:元素是一维数组的数组。
2.定义格式:

  • A:数据类型[][] 数组名 = new 数据类型[m][n];
    m:表示这个二维数组有多少个一维数组。
    n:表示每一个一维数组的元素有多少个。
  • B:数据类型[][] 数组名 = new 数据类型[m][];
    m:表示这个二维数组有多少个一维数组。
    列数没有给出,可以动态的给。
	//定义数组
	int[][] arr = new int[3][];
	//动态的为每一个一维数组分配空间
	arr[0] = new int[2];
	arr[1] = new int[3];
	arr[2] = new int[1];
  • C:数据类型[][] 数组名 = new 数据类型[][]{{…},{…},{…}}; 或者
    数据类型[][] 数组名 = {{…},{…},{…}};
	//定义数组
	int[][] arr = {{1,2,3},{4,5},{6}};

3.说明:

二维数组arr[m][n]中,arr是二维数组的地址,arr[m]是二维数组中的一维数组元素的首地址,arr[m][n]则是一维数组中对应的元素值
其中,arr.length = m,arr[i].length = n.

4.内存图:

Java中的参数传递问题

1.基本类型:形式参数的改变对实际参数没有影响。
2.引用类型:形式参数的改变直接影响实际参数。

class ArgsDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		System.out.println("a:"+a+",b:"+b); //a:10,b:20
		change(a,b);
		System.out.println("a:"+a+",b:"+b); //???	a:10,b:20

		int[] arr = {1,2,3,4,5}; 
		change(arr);
		System.out.println(arr[1]); //???	4
	}

	public static void change(int a,int b) { //a=10,b=20
		System.out.println("a:"+a+",b:"+b); //a:10,b:20
		a = b;	//a=20
		b = a + b; //b=40
		System.out.println("a:"+a+",b:"+b); //a:20,b:40
	}

	public static void change(int[] arr) { //arr={1,2,3,4,5};
		for(int x=0; x<arr.length; x++) {
			if(arr[x]%2==0) {
				arr[x]*=2;
			}
		}
		//arr={1,4,3,8,5};
	}
}

代码对应的内存图如下:
内存图
例子:将数字按位数转化到数组:

static int[] Num2Arr(int num){
	 int [] arr = new int[8];
	 int index = 0;
	 while(num > 0){
	 	arr[index] = num % 10;
	 	index ++;
	 	num /= 10;
	 }
	 return arr;
}

猜你喜欢

转载自blog.csdn.net/JayFan_Ma/article/details/86714233
今日推荐