Java的引用传递和值传递
来源:互联网 发布:济宁预算软件 编辑:程序博客网 时间:2024/05/03 21:53
Java的引用传递和值传递
今天组长问我Java的值传递和引用传递分别是什么,写出个例子比较一下。刚开始想没什么难的,问度娘啊,不搜不要紧,一下子弄懵逼了。好多文章上来就说Java没有引用传递,只有值传递,坑爹啊,本来是明白的只是抄个代码而已,弄得自己都不知道怎么办了。搜了一下午,结合别人的思路自己总结了一下,关于Java的值传递和引用传递。
直接上代码(有点简单,大家将就看吧):
package com.passBy;public class PassBy { //test1演示的是值传递 public int test1(int num) { num = 10; return num; } //test2演示的是引用传递 public void test2(Student stu) { stu.age = 20; } public static void main(String[] args) { PassBy passby = new PassBy(); int value = 0; passby.test1(value); System.out.println("值传递: " + passby.test1(value)); //引用传递前先创建引用student Student student = new Student(); passby.test2(student); System.out.println("引用传递: " +student.age); }}
package com.passBy;public class Student { int age = 15;}
test1是值传递的方法,大家都能看得懂。实际就是把value=10拷贝进方法test1中,拷贝这个词很重要,他只是把10这个值传进去,互不影响,拷贝的是值,与其他无关。
test2是引用传递,刚开始我没搞清引用是什么,弄得自己很难受。
举个例子:
Student student = new Student();
student就是引用
new Student()是对象
这时候你在看test2代码,你就豁然开朗,我擦这么回事,区别是这个样子。这时候咱们来点高深的,前面说到值传递,只是将值拷贝传递下去。引用不一样,引用指向的是一个内存地址,将它传递下去,你对他修改就会有影响,因为前后引用都指向一个内存地址。
网上关于Java是不是只有值传递,我是这么理解的,引用传递,传递的是一个内存地址。这个内存地址是一个值的形式传递的,传递的是一个值,所以Java只有值传递。我的看法是,没必要弄得那么死板,我觉得还是有点区别的,毕竟两种方式在内存方面分配是有些不同的,我们不能弄的太形而上学,那么较真,知识是不断进步的,有个发展的眼光也是不错的。
下面我们在谈一谈两种方式的使用,基本类型都是值传递,注意String类型虽然不是基本类型,但他的使用有些特别貌似也是值传递(我也是个菜鸟,没看太明白),其他的是引用传递。
对于引用分配我推荐一个博客,地址http://yqsshr.blog.51cto.com/469059/147695/。
当中内存分配那段讲得很好,让我豁然开朗。
引用和对象我看的是百度经验,地址http://jingyan.baidu.com/article/a501d80cf734c3ec630f5e25.html
这是我的很烂的总结与归纳,有不妥之处请大神指教,我来起个抛砖引玉的。
- Java的值传递和引用传递
- java的引用传递和值传递
- java的引用传递和值传递
- Java的引用传递和值传递
- java的值传递和引用传递
- java的值传递和引用传递
- java的值传递和引用传递
- Java的参数传递有值传递和引用传递
- [学习笔记]Java的值传递和引用传递,引用传递转值传递
- java复习-java的值传递和引用传递
- Java的方法的参数传递,值传递和引用传递还有String字符串传递
- Java的值传递和引用值传递的区别
- java的"值传递"和"引用传递"的问题
- 关于Java的值传递和引用传递的总结
- 对于Java的值传递和引用传递的区别
- java中的“值传递”和“引用传递”
- java值传递和引用传递
- java中的值传递和引用传递
- 十大热门的大数据技术
- [linux]因python升级导致的yum命令无法执行
- Java编译单元为什么只能有一个public类,而且源文件名必须要与类名相同
- Hadoop学习第一章_初识Hadoop
- C#第一篇之性能优化
- Java的引用传递和值传递
- 浏览器的渲染原理简介
- hadoop学习资料园地
- Markdown的语法&在SublimeText中的使用
- Keywords Search (HDU_2222) AC自动机
- Spring 3中各JAR包的用途说明
- iso 下载
- 进程
- 请努力!!!