教学贴:引用类型,值传递,引用传递
很多人老是搞不懂引用类型到底是个什么玩意,查MSDN,上网查,基本就是堆栈什么的,枯涩难懂
我就来给大家形象的解释解释什么是引用类型
值类型大家基本都知道是怎么回事,就不赘述了
引用类型不过就是类似硬盘上的文件,比如D:\1.TXT
实例化一个对象(创建文件),它的实例始终只有一个,而路径就是它的引用,引用它的对象可以有很多个(就是一串文本)
你可以在同一个程序里的不同地方使用这个路径,甚至在不同的程序里使用这个路径,但是不管你用了多少次,它都指向的同一个对象
什么是值传递呢?
就是只把路径传递过去
那么我拿到路径之后,通过这个路径把文件改了,传路径过来的地方再去访问这个文件,也同样是改过的
而如果我拿到路径之后不用,而是重新new一个对象(copy了一个文件,叫D:\副本-1.TXT),那么当前的路径(引用)是指向了新的对象,跟原来的没任何关系了,我无论对这个文件如何改,都不影响原来的
什么是引用传递呢?
就是把路径传递回去。
如果路径没变(没有重新copy文件),那么传回去和不传回去其实没有区别,反正没变嘛
如果路径变了,那么把新路径传递回去,那么两个地方就都指向新文件,而旧文件就没用了
我就来给大家形象的解释解释什么是引用类型
值类型大家基本都知道是怎么回事,就不赘述了
引用类型不过就是类似硬盘上的文件,比如D:\1.TXT
实例化一个对象(创建文件),它的实例始终只有一个,而路径就是它的引用,引用它的对象可以有很多个(就是一串文本)
你可以在同一个程序里的不同地方使用这个路径,甚至在不同的程序里使用这个路径,但是不管你用了多少次,它都指向的同一个对象
什么是值传递呢?
就是只把路径传递过去
那么我拿到路径之后,通过这个路径把文件改了,传路径过来的地方再去访问这个文件,也同样是改过的
而如果我拿到路径之后不用,而是重新new一个对象(copy了一个文件,叫D:\副本-1.TXT),那么当前的路径(引用)是指向了新的对象,跟原来的没任何关系了,我无论对这个文件如何改,都不影响原来的
什么是引用传递呢?
就是把路径传递回去。
如果路径没变(没有重新copy文件),那么传回去和不传回去其实没有区别,反正没变嘛
如果路径变了,那么把新路径传递回去,那么两个地方就都指向新文件,而旧文件就没用了
...全文
相关推荐
java值传递与引用传递
不管是按值传递还是按引用传递,都是把栈中的数据备份了一份给参数变量,只不过值类型备份的是具体的数值,而引用类型备份的是内存地址
详解java的值传递、地址传递、引用传递
主要介绍了详解java的值传递、地址传递、引用传递的相关资料,需要的朋友可以参考下
Java中的值传递和引用传递
当一个变量为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和引用传递。 值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值 引用传递的特点:方法内部对传进去的参数作的改变也会影响方法外部的变量的值 那么哪些是值传递,哪些是引用传递呢? 1、基本类型(8种)的传递都是值传递 2、引用类型(除String外)都是引用传递 3、Strng比较特殊,它虽然是引用类型,但是却是值传递 通过一下例子来理解: Student.java package com.tianjf; public cla
Java值传递和引用传递详解
主要为大家详细介绍了Java值传递和引用传递,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
值传递,指针传递,引用传递的区别,内含可运行代码和详细解释
总结:在实际使用中,值传递一方面会占用内存空间,内置类型还好(int等),如果是类(class)类型,赋值可能会是很大一笔开销;另一方面,值传递由于形参和实参内存地址不一样,有些功能并不能实现(swap()),因此,除了极为简单的函数会使用值传递外,大多数会采用引用传递。而对于指针传递,则在涉及数组的情况下使用较多,因为指针本身会给代码增加复杂性,难维护性


非技术区
