五、值的传递与引用传递
•值传递(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);
}
}
为了方便查看,下面附上以上代码的运行结果: