Java对象与Java对象引用的区别
Java中创建对象和创建对象引用,分别会在内存中的不同位置分配空间。
创建对象时,在堆内存中分配一块空间,存放该对象。而在创建对象引用时,则会在方法栈空间中分配,且分配的空间中并无内容。
例:
FighterPlane fp; 与
new FighterPlane(); 的区别在于,前者只是在方法栈空间中分配了一块空间,空间内并无内容,且无实际意义;而后者在堆内存中分配了一块空间用以存放对象内容。
而只有当fp被赋值,即语句FighterPlane fp = new FighterPlane()时,fp所属的内存空间才有了内容,即对象的地址值(类似于C++的指针),也才有了实际意义。从此fp与该对象关联,通过fp即可操控该对象。
Java对象的创建与C++对象创建的区别
两者的区别在于,同样的语句,在C++中创建的是对象,而在Java中创建的是对象引用。
例:
语句 FighterPlane fp;
在C++中创建了名为fp的FighterPlane 类对象,而在Java中只是创建了一个FighterPlane 类的对象引用,并无实际意义。