我遇到了Java问题。这是代码:
class Nmb {
private int value ;
public Nmb ( int value ) {
this.value = value ;
}
public Nmb (Nmb number ) {
value = number.value ;
}
public void duplicate ( ) {
value = 2*value ;
}
public String toString ( ) {
return "" + value ;
}
public static void main ( String [ ] args ) {
Nmb a = new Nmb ( 3 ) ;
Nmb b = new Nmb ( a ) ;
Nmb c = b ;
a.duplicate ( ) ;
b.duplicate();
c.duplicate();
System.out.println ( a + "," + b + ","+ c ) ;
}
}
输出结果为:6,12,12
我做了一些测试,我看到b和c在执行c.duplicate时取值12。为什么会这样?为什么c.duplicate会调用对象b?当创建该对象时,不应该具有b(3)的值,并且当调用重复方法并且结果为6,6,6时,不应该使用3吗?对象c将始终与对象b连接,而值1将始终取决于另一个的值?
谢谢
答案 0 :(得分:1)
这是因为c
是与b
相同的对象的引用,所以这些都是指向同一个对象的引用。
您要将b
分配给c
(即您实际创建的是引用,而不是新对象):
Nmb c = b ;
因此,执行c.duplicate()
将适用于b
和c
。
更清楚地说明:
______________
b (reference) -> | |
| Num object |
c (reference) -> |______________|