在JAVA中怎么可以使变量进行引用传递啊??

来源:百度知道 编辑:UC知道 时间:2024/06/28 11:55:56
我给出代码::
----------------------------------------
public class Test {
public Test() {
}

public static void main(String[] args)
{
Cheshi c1=new Cheshi();
Cheshi2 c2=new Cheshi2(c1.num);
c1.show();
}
}
class Cheshi
{
Cheshi()
{
num=new Integer(20);
}
void show()
{
System.out.println(num);
}
Integer num;
}
class Cheshi2
{
Cheshi2(Integer res)
{
res= new Integer(40);
}
}
-------------------------------------------
我想在最后输出结果为40,就是把Cheshi里的num做引用传递过去。我想对它的值进行修改,我该怎么做呢
1楼的朋友,你说的我试了还是不行啊。。。。

你这个程序写错了
1.测试的拼音是ceshi,不是cheshi
2.
Cheshi2 c2=new Cheshi2(c1.num);
然后res= new Integer(40);

new Integer(40),res引用的是新的对象了,不再是原先那个c1.num

所以c1.show(); 将显示20,因为在cheshi2方法里没有修改到那个数据
-----------------


class Cheshi2
{
Cheshi2(Integer res)
{
res= new Integer(40);
}
}
改成
class Cheshi2
{
Cheshi2(Integer res)
{
res= res*2;
}
}

一般编程是在cheshi类中就应该写一个public void setNumO方法,通过调用这个方法来修改这个类里面的值

首先,这个类里面的方法没用:
class Cheshi2
{
Cheshi2(Integer res)
{
res= new Integer(40);
}
}
我知道你以为引用可以这样做,但事实是:
执行Cheshi2 c2=new Cheshi2(c1.num);调用
Cheshi2(Integer res)
{
res= new Integer(40);
}
Integer res是新建的一个对象(这是函数调用的规则之一),只是它的值是c1.num,它和c1.num是两个不同的东西!你改变res:res= new Integer(40);让res指向一个不同的对象,但是c1.num没变啊,它还指向原来的num = new Integer(20);.

不赞同上一位的说法。
Cheshi2 c2=new Chesh