作者newjoy (职业格斗家)
看板java
标题[问题] pass-by-value的问题
时间Sat Oct 30 18:09:10 2010
public class test {
private int index = 0;
public test()
{
this.index = 0;
}
public void setIndex(int index)
{
this.index = index;
}
public int getIndex()
{
return this.index;
}
public static void assignT(test t)
{
t = new test();
}
public static void main(String[] args){
test t1 = new test();
t1.setIndex(9);
assignT(t1);
System.out.println("value : "+t1.getIndex());
}
}
如果传入function 里面的是 object的 reference,
那为什麽执行assignT之後
印出来的值一样是9而不是0??
假设 t1 的位址是 0xAA
那传进 assignT 里的 t 会是copy的一份 0xAA的 object 位址
然後 t = new test(); 会把0xAA的内容指向一个新的 test实体,
这样理解有错吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.248.140
1F:→ darkk6:t1 指向的 test instance 值还是 9 没错啊 10/30 18:16
※ 编辑: newjoy 来自: 220.135.248.140 (10/30 18:20)
2F:→ idlejustin:t = new test(); 不是把0xAA的内容重指 10/30 19:24
3F:→ idlejustin:assignT 里的 t 也不是 copy 的一份 0xAA 的 object 10/30 19:25
4F:→ idlejustin:位址 t 是一个新的 referenece 变数 10/30 19:32
5F:→ james732:我想问一下,如果要让main里的t1真的换掉的话,要怎麽改? 10/30 20:39
6F:→ james732:在C里面可以用双重指标**来做到,Java该怎麽写呢? 10/30 20:41
7F:→ wendly777:将test包到另外一个object,或传test [],基本上array就 10/30 21:07
8F:→ wendly777:是另外一个object了,应该是没其他方法了吧? 10/30 21:10
9F:→ meconin:把 t1 宣告给 class ... 不要给 main 11/05 11:45
10F:→ meconin:不过这跟包给另一个 object 是一样的意思 11/05 11:53