网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月23日
漏签
0
天
java吧
关注:
1,251,133
贴子:
12,734,536
看贴
图片
吧主推荐
视频
游戏
46
回复贴,共
1
页
<返回java吧
>0< 加载中...
关于引用传递与值传递
只看楼主
收藏
回复
刘益安smile
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
结果为什么是 good and gbc
送TA礼物
IP属地:北京
来自
Android客户端
1楼
2014-07-17 21:12
回复
aa648629778
淼淼淼
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
去看看JAVA的堆区跟栈区吧
IP属地:浙江
4楼
2014-07-17 22:50
回复
收起回复
官渡区天互软件开发工作室
Vue2+Vue3,低代码/无代码,分布式,单体式,工作流引擎,流程设计器,表单设计器,规则引擎,代码生成器,SaaS多租户,接口集成引擎,页面视图引擎,数据报表引擎,BI大屏引擎
2025-03-23 14:43
广告
立即查看
Jun__
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
char是引用类型所以会改,string 用new的时候是先在string池中,然后存在堆中。用等于应该只改变了spring池里 而堆中的数据未改变。这是我的理解
IP属地:浙江
5楼
2014-07-18 09:25
回复
收起回复
贴吧用户_QaMXJ31
淼淼沝
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
呵呵,这个问题被无数人问过了,翻翻以前的帖子去吧。java只有值传递,没有引用传递。
6楼
2014-07-18 10:30
回复
收起回复
ykt979029239
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我来给大家科普一下:
Java中没有指针,所以也没有引用传递了,仅仅有值传递 不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
IP属地:江苏
7楼
2014-07-18 11:35
回复
收起回复
恍若明月
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
很多人都疑惑的问题,看来对 值传递 认识不够清楚。
记住一句话:java里面只有值传递,没有引用传递(虽然有点像)。
IP属地:重庆
8楼
2014-07-18 11:52
回复
收起回复
一只小猪
淼淼沝
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
放屁。
来自
Android客户端
9楼
2014-07-18 12:19
回复
收起回复
ykt979029239
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在java中所有的专递(对象,或者属性)都是引用传递,在change方法中属性字符串str和Example类的属性字符串str并不指向同一个内存(可以认为是java虚拟机重新开辟的内存),所以在change方法中的str和该类中的str根本就是两回事各不相干,只是借用了全局变量的值而已!如果想让引用地址相同可以在change方法中加上关键字this即this.str=“test ok”(你可以试一下看变没变)!同理另外一个就不说了,就是引用的地址一样!
IP属地:江苏
10楼
2014-07-18 12:22
回复(3)
收起回复
zzb12
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
str = "test ok"; // 你修改了局部变量str的引用,但并没有修改它原本所引用的对象(也就是"good"),所以它原本所引用对象不会变化
ch[0] = 'g'; // 你修改了局部变量ch所引用的对象的[0]元素的值,因为这个ch变量与this.ch变量所引用的是同一个对象,所以main中打印ex.ch就会发现它已经变了
IP属地:广西
11楼
2014-07-18 13:09
回复
收起回复
哒哒猫吃鱼
淼淼淼沝
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
写的真乱
IP属地:山东
来自
iPhone客户端
12楼
2014-07-18 13:52
回复
收起回复
馁孜丶米
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先Sting是引用类型
但同时String也是不可变类,String类的源代码中定义是final类型
String str = new String("good"); 栈上的引用str 指向堆上的"good"
这时"good"所在的内存地址为 地址1
在方法中public void change (String str)这里的str是一个新的引用 虽然名字一样 但实际上和类变量str是完全不同的两个引用 为了便于理解我们将后者称为str2(命名对本例没有影响)
当你调用change方法并传参 就把str中所储存的地址 传递给了str2
也就是 str2 现在所指向的物理地址和str相同 都是堆上的地址1 内容为"good"
因为String是不可变类 所以在change()方法中
str2="test ok” 此时str2指向新的物理地址 地址2 地址上的内容为"test ok"
但str依旧是指向地址1的
需要特别说明的一点是 str2=“test ok" 中 "test ok"是存在常量池中的
因为这句话并没有新建对象
共同学习,如果有不对的地方欢迎大家一起讨论
13楼
2014-07-18 14:06
回复(8)
收起回复
忽悠来啦
司马沝
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好乱,但学习了,这个题是考String的。
IP属地:湖北
14楼
2014-07-18 14:38
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
饺子导演票房破200亿
1724862
2
有没有哪个瞬间你以贴吧为荣
1274672
3
第一次见KPL赛事热度超过LPL
1262115
4
吧友长文怒批无职转生不良三观
1039714
5
湖人爆冷31分惨败公牛
846250
6
永不空军的钓鱼佬钓了个小孩
679224
7
BLG新赛季状态调整好了吗
516281
8
奥美迦奥特曼形象曝光
451726
9
郑钦文2比0横扫汤森德
324960
10
怎么看育碧宣布AC影玩家破200w
236930
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示