在C++中方法参数的传递有两种方法——值传递和引用传递。
- 值传递即在传递时,方法内部会对传进来的参数进行一个深拷贝,改变此参数不会影响参数的原始值;
- 引用传递相当于传递对象的地址,因此改变此参数值就是改变参数原始值。
而在java中,只有一种传参方式——值传递。初听起来显得很白痴,因为当我们传进去的参数占用内存很大的时候,方法内部进行一次拷贝会非常消耗内存。然而,对于不同的数据类型值传递的方法是不同的:
- 基础数据类型,对于基础数据类型,就是简单的值传递,方法内部copy一份。这些数据都是存在栈中的;
-
而对于引用类型(对象),这些数据保存在堆区,在传参时是传入对象的引用(即地址),方法内部传入的其实是地址,这样能有效避免大对象的内存浪费。
网友评论