问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在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》
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离过年还有2个月,是找工作,还是等过年? 还有两个多月就过年了,我是现在找工作呢还是过完年再找呢?现在找工作是... i57300u处理器属于什么水平 i5-7300u处于什么水平 国家线2024考研分数线是多少 电脑软件使用记录如何查看电脑当天的使用记录 在哪里查电脑最近使用情况怎么查看笔记本电脑的使用记录 英语题急求 ...以前都是以1MB/s速度下载,但是现在都不到300K/s,是不是WiFi路由器... 我家4兆的网线1台电脑可是我今天测网速时却只有16KB/S 这是为什么啊 带“有”“语”两个字的成语有哪些? 末尾带语字的成语有哪些? 关于java多线程的问题,用了同步,视乎没有同步? 与语字有关的成语 有带语字的成语有哪些 求脑筋急转弯(要有选择的)() 脑筋急转弯选择题! java并发问题,version不是可以解决多用户同时更改的问题吗,但是这样好像有问题,还要加线程安全的东西 一道脑筋急转弯选择题! 母狗生完小狗后,可以摸它的小狗吗?听说会变得很凶,那应该注意点什么呢? “语”字开头的成语有哪些? 火车票网上订票注册不成功是怎么回事 java问题 有一个list有1W条数据, 现在我想用多线程不重复的读取list中的数据,要怎么写? 搜狗的符号怎么打啊 狗狗的母性会持续多久? 搜狗上特殊符号怎么打?急用 java.util.concurrent.atomic的原子模块 为什么看芒果TV视频总是这样 带有语字的成语有哪些 语字的成语有哪些成语 含有言和语的四字成语 脑筋急转弯选择题及答案 急求...... 母性狗狗随着年龄的增长在多大的时候会不会失去生育能力? 生过小狗的母狗和没有生过的区别是什么. 找脑筋急转弯,要选择的(越难越好) 金毛母性差不饲养幼犬什么原因? 求20个脑筋急转弯 要求4选1 求脑筋急转弯选择题 二选一 要求带答案~~ 我要特别特别难的脑筋急转弯,题目要很长,最好是选择题形式的 搞笑的脑筋急转弯选择题 哪里能找到大量带错误选项的脑筋急转弯?必须是4选1或者3选1的 有三个选择大脑筋急转弯 如何批量修改文件后缀名? 猪肝吃多了好不好 图片过滤筛选软件 多吃猪肝对身体好吗? 图片上的字怎么弄的? 猪肝吃多了有什么好处和坏处 微信运动步数 猪肝吃多了对人体有好处吗?其因素是什么?