Java(八)数组(2)

五、值的传递与引用传递

值传递(pass by value)是指在调用函数时将实际参数 复制 一份传递到函数中,这样在函数中如果对 参数 进行修改,将不会影响到实际参数。

public class Test {

	public static void main(String[] args) {
		int x=10;
		test(x);
		System.out.println(x);//输出10
	}
	
	public static void test(int y) {
		y=0;
	}
}

引用传递(pass by reference)是指在调用函数时将实际参数的地址 直接 传递到函数中,那么在函数中对 参数 所进行的修改,将影响到实际参数。

public class Test {

	public static void main(String[] args) {
		int [] x= {10};
		test(x);
		System.out.println(x[0]);//输出0
	}
	
	public static void test(int [] y) {
		y[0]=0;
	}
}

关于数组的 运用需要多加练习, 下面附上我自己的练习,运行结果附带在注释中:

class PThree02{
	
	public static void main(String args[]){
		int [][] StuScore = new int [][]{{81,82,83,84},{71,72,73,74},{61,62,63,64}};
		
		//求每个人的平均成绩
		System.out.println("输出学生平均成绩如下:");
		for(int [] Stu : StuScore){
			float sum =0.0f;
			for(int score : Stu){
				sum+=score;
			}
			System.out.println(sum/Stu.length);
		}
		
		//求每个科目的平均成绩
		
	}
}

class PThree03{
	
	//题目要求:已知一个含有10个元素的数组,输出所有奇数索引位置的元素值。
	//注意要求是奇数索引位置,但是数组是从0开始。
	public static void main(String args[]){
		int [] array = new int []{0,1,2,3,4,5,6,7,8,9};
		
		//第一种方法如下:
		System.out.println("输出结果如下:");
		for(int i=0;i<array.length;i++){
			if(i%2==1){
				System.out.println(array[i]);
			}
		}
		
		//第二种方法如下:
		System.out.println("输出结果如下:");
		for(int i=1;i<array.length;i=i+2){
			System.out.println(array[i]);
		}
	}
}

class PThree04{
	
	//3、把1----36分别放入数组中,计算数组对角元素之和(提示:需要定义一个6X6的数组) 
	public static void main(String args[]){
		
		int [][] array = new int [6][6];
		int m=1;
		System.out.println("数组:");
		
		/**
		for(int [] a :array){
			for(int b : a){
				a=m;
				m++;
				System.out.print("\t"+a);
			}
		}//但是m的值并没有存入数组中
		*/
		for(int i=0; i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				array[i][j]=m;
				m++;
				System.out.print("\t"+array[i][j]);
			}
			System.out.println();
		}//给数组赋值
		
		
		//第一种方法
		int sum =0;
		for(int i=0; i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				if((i==j)||((i+j)==(array.length-1)))//当i==j或者(i+j)==(array.length-1)时,array[i][j]位于对角线上。
					sum=sum+array[i][j];
				//System.out.print("\t"+array[i][j]);
				//注释的代码是之前用于检测数组中是否有值。
			}
			//System.out.println();
		}
		System.out.println("对角元素之和为:"+sum);
		
		//第二种方法:
		int Sum=0;
		for(int i=0;i<array.length;i++){
			Sum = Sum+array[i][i]+array[i][array.length-i-1];
		}
		System.out.println("对角元素之和为:"+Sum);
		
	}
}

class PThree05{
	
	public static void test(int i){
		i=9;
	}
	
	public static void test(int [] i){
		i[0]=9;
	}
	
	public static void main(String args[]){
		int age=10;
		int [] aArray={5};
		int AA;//AA的值没有初始化,因此如果直接输出会报错。
		
		test(age);
		System.out.println(age);
		
		test(aArray[0]);
		System.out.println(aArray[0]);
		
		test(aArray);
		System.out.println(aArray[0]);
		//test(AA);
		//System.out.println(AA);
	}
}

 为了方便查看,下面附上以上代码的运行结果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值