1、值传递
在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。
例如,当我们在拼接字符串的是否,有经验的人总是不建议我们使用+运算符来拼接,因为这样会产生很多字符串的临时实例,造成空间和时间的浪费。
那就有人要问了,我不用+运算符我怎么拼接字符串呢?在这里,我就简单写一下拼接字符串的几种方法吧。
- +运算符
- ‘-’.join()
- 格式化字符串(%s或者format)
- *运算符
- 多行字符串拼接 ()
关于字符串拼接的详情,请移步 聊聊 Python 字符串连接的七种方式
2、引用传递
引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。
3、总结
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
4、参考文献
[1] 什么是值传递和引用传递?
[2] Java中值传递和引用传递的理解