【发布时间】:2014-07-25 10:06:32
【问题描述】:
在学习 C 语言时,我了解到将变量传递给函数时。您没有传递变量本身,而是传递了它的副本,因此实际变量的值不会改变,除非函数返回一个值并将该值分配给变量。 但是我刚刚执行了这个程序,当我将“Newobj”对象传递给“changer”函数然后更改变量的值,然后打印它正在工作的新变量值时,就会发生这种情况。它不应该发生对吗?因为我将“Newobj”的副本发送到“copyobj”。请解释一下,我很困惑。
注意:请详细解释。我的大脑很慢。我知道c的概念和c++的一些概念;
这是我的代码:
public class PassObjects {
int regno;
String name;
double per;
PassObjects(int a,String s,double p){
regno=a;
name=s;
per=p;
}
PassObjects changer (PassObjects copyobj){
copyobj.regno=797;
copyobj.name="Srimanth";
copyobj.per=70.9;
return copyobj;
}
public static void main(String[] args){
PassObjects Newobj= new PassObjects(86,"srimanth",85.4);
System.out.println("The original values of Instance variables are "+Newobj.regno+" "+Newobj.name+" "+Newobj.per);
Newobj.changer(Newobj);
System.out.println("The changeed values of Newobj are "+Newobj.regno+" "+Newobj.name+" "+Newobj.per);
}
}
输出在这里:
The original values of Instance variables are 86 srimanth 85.4
The changeed values of Newobj are 797 Srimanth 70.9
【问题讨论】:
-
在 Java 中 对对象的引用是按值传递的。