Java对象与Java 对象引用区别以及与C++对象的区别

一.Java对象与Java对象引用的区别

先来看一段代码

 FighterPlane fp  = new FirghterPlane();

代码的执行过程是先产生对象,之后将对象赋予声明fp;
有声明时可以没有对象,当声明被赋予特定的对象后,声明就被另一个概念——“引用”所取代;
从某种角度上讲,引用就好比对象的名片;

fp作为引用,在栈中保留了堆中对象的实际地址;
对象作为参数时,对象是引用传递,传递的的事对象的地址,也就是说对象只有一个,而引用可以有多个。

二.Java对象与C++对象的区别

同样是这段代码
FirghterPlane fp;
  1. 这段代码在Java中产生一个对象的声明,此时并没有任何此类的对象产生,也没有为此对象分配内存空间,而在C++中,此时已经产生了一个对象;
  2. C++中用关键字new方式创建的对象在堆中,而用“FirghterPlane fp”方式产生的对象在方法栈中;

即Java 中的变量名仅仅是一个用于引用内存中实际对象的标识符,如果你没给它关联对象,它就为空引用。而 C++ 中的变量名(非指针类型),虽然也是标识符,但却始终关联着实际的内存空间,当我们看到一个变量(非指针类型)时,就知道它代表着一块实际的内存空间。

原文地址:https://www.cnblogs.com/myzhibei/p/12890567.html