Java中的对象与引用
在Java中,如果我声明,
MyClass obj;
obj被称为“参考”或“对象”。 我不是在这里实例化课程。
obj是对MyClass实例的引用。
目前,该引用为NULL,因为您尚未将其指定为引用任何实例。
从技术上讲,MyClass必须是Object的子类,因此可以说obj也是对Object实例的引用。
参考 :指向内存中某个对象的变量。 它存储在堆栈中,它们可以包含在其他对象中(然后它们不是真正的变量,而是字段),这也将它们放在堆上。
对象 :动态创建的类的实例。 它存储在堆中
例:
MyClassI aObj,aObj1; aObj=new MyClass2();
在第一行aObj和aObj1是参考
在第二行aObj引用MyClass2的对象(New运算符创建Myclass2的对象,其地址分配给aObj)。
要了解甚至更好地考虑具有driverName作为成员的类Car。
Car c1,c2; c1.driverName="Andrew" c2.driverName="Gabriel" System.out.println(c1.driverName);//gives Andrew System.out.println(c2.driverName);//gives Gabriel c1=c2; c2=null; // gives gabriel because the address of c2 is copied to reference c1. // the object is not nullified because c2 is just a reference when // assigning null the address that is stored on c2 in nullified not // the object it points.. system.out.println(c1.driverName);
在计算机科学中,引用是使程序能够间接访问计算机存储器或某些其他存储设备中的特定数据项(例如变量或记录)的值。 据说该引用是指数据项,访问该数据称为取消引用该引用。
在计算机科学中,对象是可以由编程语言的命令操纵的任何实体,例如值,变量,函数或数据结构。 (随后引入面向对象编程的同一个词,“对象”,指的是一个类的特定实例)
所以obj是一个引用, new MyClass()
可以看作是一个对象
有时你会听到人们说“设计一个以对象为参数的方法……”
如果您不熟悉编程,尤其是Java,那么这些语句可能会导致一些混乱。 这些人使用“对象”这个词来指代一个非常一般的OOP术语的类的实例,而不一定是Java特定的。
当我们讨论有关Java和您所拥有的代码的细节时,它是对MyClass
实例的引用,它是NULL。
obj是MyClass类型的引用。 当前引用不指向任何内容(即:null)。
‘obj’是一个变量 。 它包含引用或null。 如果它包含引用,则引用一个对象。
- 在Java中,所有对象都通过引用访问,并且您永远不能直接访问对象本身。
-
reference: – 是一个具有名称且可用于访问对象内容的变量,可以将引用分配给传递给方法的另一个引用,或者从方法返回。 所有引用都是相同的大小,无论它们的类型是什么,如“对象对象”。
-
object: – 是一个存在于Java运行时环境分配的内存中的实体,一个对象位于堆上,没有名称Like“Object object = new Object();”。
-
所以MyClass obj这是一个引用 Null 的引用 。
-
我们可以用以下两条规则来总结这个原则:
- 对象的类型确定内存中对象中存在哪些属性。
- 对象引用的类型确定Java程序可以访问哪些方法和变量。
引用是一个具有名称的变量,可用于访问对象的内容。 可以将引用分配给另一个引用,传递给方法或从方法返回。
无论类型是什么, 所有引用都是相同的大小。 对象位于堆上,没有名称。 因此,除了通过引用之外,您无法访问对象。 对象具有各种不同的形状和大小,并消耗不同的内存量。 无法将对象分配给另一个对象,也无法将对象传递给方法或从方法返回。 它是收集垃圾的对象,而不是它的参考。