不同于C、C++,JAVA中不需要程序员对指针进行操作。不过,这不代表JAVA没有指针,事实上,JAVA的指针操作都被底层代码封装了。笔者在初学Java时,虽然就了解了形参,实参,StringBuffer这些概念,但一直只流于表面,对此没有一个深度的认识。直到最近开始学习JVM虚拟机,才真正认识到了JAVA的精妙之处。
首先,先说结论,Java中所有的基本数据类型的传递,都是按值传递,即传递的都是形参。除此以外的其他任何传递都是按地址传递,传递过去的都是实参,即cpp概念中的引用传递。最初笔者学习时也是就看到这,虽然知道了结论,但由于概念过于抽象,始终无法理解其本源(或者说内存模型中到底发生了什么)。Talk is cheap,show me the code。下面,我们来看一段代码。
package point;
public class Formal {
private void formal(int p){
p=p*5;
System.out.println(p);
}
public static void main(String[]args){
int i=5;
Formal fromal=new Formal();
fromal.formal(i);
System.out.<