u010775468
键盘手C
2016-04-19 07:29

JAVA中函数的参数值的传递问题

  • java

在学习java中,遇到这样一个问题
class PasasVale{
public static void main(String [] args){
int x = 5;
change(x);
System.out.println(x);
public static void public change(int y){
y =3;
}
}
}
输出结果为5;
还有一个例子
class PasasVale{
public static void main(String [] args){
PassVale obj = PassVale();
obj.x = 5;
change(obj);
System.out.println(x);
public static void public chang(obj){
obj. y =3;
}
}
}
输出结果为3
也就是说结果被更改了
在分析里是这样说的,第一个例子,刚开始,main中的值为5,然后change中的值未定,然后传值,两个都为5,然后在change中修改了值为3,然后原来main中的值还是5,所以输出来为5
第二个例子,是引用了堆和栈的概念,说原来在栈中main中obj中存一个地址,然后指向堆内存中的5,这时,change值未定,然后又传值,这时change中却传的是地址,也指向了堆中的这个5,然后修改,然后就变了
我不明白的是为什么第一个例子里没有这麽做。第二个却在堆栈中操作了,难道两个例子的修改值不在一个层面上吗,求解答,谢谢

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

4条回答

为你推荐

换一换