值传递和引用传递
值传递:
所谓值传递指的是传递的是参数的拷贝,对这个拷贝的任何修改不影响原来的值。
引用传递:
引用传递指的是传递的是参数的内存地址的拷贝,通过引用拷贝的内存地址去修改参数的值会影响原来值。
Java 中的值传递和引用传递
一个普遍的说法是 Java 中的基本类型是值传递,而其他的类型属于引用传递。但是又有一种说法是 Java 中只存在值传递。通过学习垠神的博客 :总结出以下几点
- Java 中的基本类型在实现上确实是通过值进行直接传递的;
- Java 中基本类型通过值进行传递是效率的优化,在语义上还是引用传递;
- Java 没有提供 deref 操作符 *,也就是说,没有办法通过对引用地址的改变来修改引用地址内的值,你只能将此引用地址的拷贝指向另一块内存地址;
- 所有的数据都是引用类型就是 Scheme 和 Java 最初的设计原理。