最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
详解java的值传递、地址传递、引用传递
时间:2022-06-29 01:28:23 编辑:袖梨 来源:一聚教程网
详解java的值传递、地址传递、引用传递
一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深。下边总结下以便更容易理解。
按照以前的理解,java中基本数据类型是值传递,对象是地址(引用)传递。给大家看个例子:
| 代码如下 | 复制代码 |
|
publicclassObjectTrans {
publicstaticvoidmain(String[] args) { String name ="123"; SChange(name); System.out.println(name); }
publicstaticvoidSChange (String str) { str ="234"; }
} | |
大家思考下,这个例子输出的结果应该是123呢还是234呢?结果是123。why?一句话表达:对象也是值传递,只是把这个对象的引用copy了一份。
其实java本来就是值传递,没有c++那样的指针传递,分步分析下上边的代码:
1、name = "123"
2、调用SChange str 和 name 共同指向 “123”(拷贝name的引用赋给str)
3、str 重新赋值并指向“234”
4、name指向不变还是“123”
下边看另外一段代码:
| 代码如下 | 复制代码 |
|
publicclassObjectTrans {
publicstaticvoidmain(String[] args) { StringBuilder name =newStringBuilder("123"); SChange(name); System.out.println(name); }
publicstaticvoidSChange (StringBuilder str) { //str = "234"; str.append("234"); }
} | |
那么这段代码输出的结果应该是什么呢?答案是123234,why?同样分步分析:
1、name = "123"
2、调用SChange str 和 name 共同指向 “123”(拷贝name的引用赋给str)
3、改变所指向对象的值"123"+"234"
4、引用没变只是值变了,所以结果为123234
如果不明白请留言,自己好好分析下。。。请记住一句话:java只有值传递。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://www.bi*ance**ng.cn/Programming/Java/201502/47977.htm
相关文章
- SimpleSvmHook:实践指南 09-10
- 灵兽大冒险地府怎么处理-任务条件和触发条件 09-10
- tplink1200g如何设置无线密码(tplink1200g设置无线密码方法) 09-10
- 灵兽大冒险葫芦在哪里在哪有哪些重点-关键信息和实际影响 09-10
- 江湖悠悠食谱配方整理汇总-主要信息和内容重点 09-10
- 灵兽大冒险装备打造流程是什么-概念边界和适用条件 09-10