欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组------二维数组(七)

程序员文章站 2022-05-20 10:59:25
...

1.二维数组遍历

外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。

class Test1_Array {
	public static void main(String[] args) {
		int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};

		for (int i = 0;i < arr.length ;i++ ) {	//获取到每个二维数组中的一维数组
			for (int j = 0;j < arr[i].length ;j++ ) {//获取每个一维数组中的元素
				System.out.print(arr[i][j] + " ");
			}

			System.out.println();
		}
	}
}

2.二维数组求和

需求:公司年销售额求和
        某公司按照季度和月份统计的数据如下:单位(万元)
        第一季度:22,66,44
        第二季度:77,33,88
        第三季度:25,45,65
        第四季度:11,66,99
class Test2_Array {
	public static void main(String[] args) {
		int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};

		int sum = 0;				//定义变量,记录每次相加的结果
		for (int i = 0;i < arr.length ;i++ ) {	//获取每一个一维数组
			for (int j = 0;j < arr[i].length ;j++ ) {//获取每一个一维数组中的元素
				sum = sum + arr[i][j];		//累加
			}
		}

		System.out.println(sum);
	}
}

3.思考题Java中的参数传递问题及图解

看程序写结果,并画内存图解释
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            System.out.println("a:"+a+",b:"+b);
            change(a,b);
            System.out.println("a:"+a+",b:"+b);
    
            int[] arr = {1,2,3,4,5};
            change(arr);
            System.out.println(arr[1]);
        }
    
        public static void change(int a,int b) {
            System.out.println("a:"+a+",b:"+b);
            a = b;
            b = a + b;
            System.out.println("a:"+a+",b:"+b);
        }
    
        public static void change(int[] arr) {
            for(int x=0; x<arr.length; x++) {
                if(arr[x]%2==0) {
                    arr[x]*=2;
                }
            }
        }
class Test3_Array {
	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);	//?*/

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

	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) {	       //1,4,3,8,5
		for(int x=0; x<arr.length; x++) {
			if(arr[x]%2==0) {
				arr[x]*=2;
			}
		}
	}
}

基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问

Java中到底是传值还是传址
1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是java之父)

基本类型的值传递:

数组------二维数组(七)

引用数据类型的值传递

数组------二维数组(七)

相关标签: 二维数组