在JAVA中怎么可以使变量进行引用传递啊??
发布网友
发布时间:2022-05-02 18:28
我来回答
共5个回答
热心网友
时间:2022-06-21 05:52
不赞同上一位的说法。
Cheshi2 c2=new Cheshi2(c1.num); 在这里只是将20这个值传进去而不是将空间地址传过去。并没有改变原有空间的数据
在这里可以将类作为参数传进去,然后对num数据进行操作,通过打印res发现实际上打印了一个空间地址,引用应该传进去一个对象才可以
public class Test {
public Test() {
}
public static void main(String[] args) {
Cheshi c1 = new Cheshi();
Cheshi2 c2 = new Cheshi2(c1);
c1.show();
}
}
class Cheshi {
Cheshi() {
num = new Integer(20);
}
void show() {
System.out.println(num);
}
Integer num;
}
class Cheshi2 {
Cheshi2(Cheshi res) {
res.num =res.num*2;
System.out.println(res);
}
}
热心网友
时间:2022-06-21 05:53
你这个程序写错了
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方法,通过调用这个方法来修改这个类里面的值
热心网友
时间:2022-06-21 05:53
首先,这个类里面的方法没用:
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);.
热心网友
时间:2022-06-21 05:54
最简单就是用AtomicInteger或AtomicLong来引用传递,不用对象包数字了!
getAndIncrement incrementAndGet 增加1 且返回原值 增加1后的值
get()获取当前值
热心网友
时间:2022-06-21 05:54
class Cheshi2{
Cheshi2(Cheshi cheshi){
cheshi.num=new Integer(cheshi.num.intValue()*2);
}
}
LZ是初学者吧,推荐本书,具体名字记不清了,叫《Effxxxxx Java》