1 引用变量与对象实体

跟 Python 中的变量一样,对象实体存放在堆中,引用变量在栈中,如下例, mn 变量存放在栈中,但他们引用(指向)同一个实体(在堆中)。

  1. MyDate m = new MyDate(2000, 1, 1);
  2. MyDate n = m;
  3. m.addyear();
  4. m.display(); // 结果为 2001-01-01
  5. m.display(); // 结果为 2001-01-01

所以如果想要 mn 引用不同的对象实体,就需要 new

2 字段变量与局部变量

image.png
字段变量是 new 出来的,所以会赋初值;而局部变量是通过栈指针移动而分配的(实际并没有显式分配),所以没有被赋初值。
image.png

这里不一样,C++ 中 static 可以修饰局部变量。

3 变量的传递

image.png
image.png