java中按值传递和引用传递区别

java中在参数传递时有2种方式,java

        一种是按值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中若是对参数进行修改,将不会影响到实际参数。简单来讲就是直接复制了一份数据过去,由于是直接复制,因此这种方式在传递时若是数据量很是大的话,运行效率天然就变低了,因此java在传递数据量很小的数据是值传递,好比java中的各类基本类型:int,float,double,boolean等类型的,具体能够本身测试。
代码:数组

 

结果:函数

 

      另一种是按引用传递:引用传递其实就弥补了上面说的不足,若是每次传参数的时候都复制一份的话,若是这个参数占用的内存空间太大的话,运行效率会很底下,因此引用传递就是直接把内存地址传过去,也就是说引用传递时,操做的其实都是源数据,这样的话修改有时候会冲突,记得用逻辑弥补下就行了,具体的数据类型就比较多了,好比Object,二维数组,List,Map等除了基本类型的参数都是引用传递。测试

代码:游戏

结果:内存

有些文章中写的是java中全部的传参方式都是按值传递,这也说得通,无非就是文字游戏,由于不管是按值传递仍是按引用传递都是把值传递过去了,因此就叫按值传递。效率

相关文章
相关标签/搜索