【发布时间】:2015-11-26 06:36:52
【问题描述】:
我有以下代码。但是,我无法理解它关于按值传递和引用传递的行为。
class Dog{
String name;
int x=100;
Dog(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
class Demo{
public static void main( String[] args ){
Dog aDog = new Dog("Tom");
foo(aDog);
if (aDog.getName().equals("Tom")) { //true
System.out.println( "Java passes by value."+ aDog.getName());
System.out.println( aDog.x);
} else if (aDog.getName().equals("Taz")) {
System.out.println( "Java passes by reference." );
}
}
public static void foo(Dog d) {
++d.x;
d = new Dog("Taz");
++d.x;
}
}
这将提供输出为
Java 按值传递.Tom
101
为什么输出101?我期待输出102。
【问题讨论】:
-
Java 总是 按值传递
标签: java pass-by-reference pass-by-value