关于值传递的若干问题

这里是一个Change类:注意方法change参数列表中的TestStudent testStudent,之前用的是int,导致了值传递age的变化;
public class Change {
void change(TestStudent testStudent,int a,int exam[])//用TestStudent testStudent代替了int,
{                                                    
testStudent.age += 10;
a +=1;
exam[0] += 10;
exam[1] += 10;
exam[2] += 10;
}
}
第二个类,测试类
public class test {
public static void main(String[] args) {
TestStudent zhangsan = new TestStudent();
zhangsan.age = 20;    //问题:age是放在堆中呢还是放在栈中;
int a = 10;
int[] exam = {45,59,99};

System.out.printf("age的值是:%d \n",zhangsan.age);
System.out.printf("普通变量a的值是:%d \n",a);
System.out.printf("exam[0]的值是:%d \n",exam[0]);
System.out.printf("exam[1]的值是:%d \n",exam[1]);
System.out.printf("exam[2]的值是:%d \n",exam[2]);

Change hehe = new Change();
hehe.change(zhangsan, a,exam);      //注意这里的zhangsan,将对象传入参数;

System.out.println("Change方法执行之后:\n");
System.out.printf("age的值是:%d \n",zhangsan.age);
System.out.printf("普通变量a的值是:%d \n",a);
System.out.printf("exam[0]的值是:%d \n",exam[0]);
System.out.printf("exam[1]的值是:%d \n",exam[1]);
System.out.printf("exam[2]的值是:%d \n",exam[2]);
}
}
第三个类:


public class TestStudent {
int age;
String name;
int a;
}






//这段程序的目的是验证了zhangsan.age的具体数值是放在堆中的,以前zhangsan.age在调用了change方法之后仍然不变,这个异常是由于之前change方法里面,自己将age定定义为了int 类型导致的,现在问题的解决方案是将Teststudent类的一个对象teststudent传入change函数的参数,这样的话引用传递之后zhangsan.age就被改变了;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值