Java中的对象与引用

时间:2011-03-01 21:20:41

标签: java

在Java中,如果我声明,

MyClass obj;

obj被称为“引用”还是“对象”。我不是在这里实例化的。

8 个答案:

答案 0 :(得分:17)

obj是对MyClass实例的引用。

目前,Reference是NULL,因为您尚未将其指定为引用任何实例。

从技术上讲,MyClass必须是Object的子类,因此可以说obj也是对Object实例的引用。

答案 1 :(得分:13)

参考:指向内存中某个对象的变量。 它存储在堆栈中,它们可以包含在其他对象中(然后它们不是真正的变量,而是字段),它们也将它们放在堆上。

对象:动态创建的类实例。 它存储在堆

示例:

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);

答案 2 :(得分:2)

  

在计算机科学中,参考是一个   使程序能够运行的值   间接访问特定数据   项目,例如变量或记录,   在计算机的内存或某些内存中   其他存储设备。参考是   据说要参考数据项,和   访问该数据被调用   取消引用该引用。

     

在计算机科学中,一个对象就是任何一个   可被操纵的实体   编程语言的命令,   如值,变量,函数,   或数据结构。 (随后   面向对象的介绍   编程相同的词,“对象”,   是指a的特定实例   类)

所以obj是一个引用,new MyClass()可以看作是一个对象

答案 3 :(得分:1)

有时候你会听到人们说“设计一种将对象作为参数的方法......”

如果您不熟悉编程,尤其是Java,那么这些语句可能会导致一些混乱。这些人使用“对象”这个词来指代一个非常普遍的OOP术语的实例,而不一定是Java特定的。

当我们谈论有关Java的细节和你在那里的代码时,它是对MyClass的实例的引用,它是NULL。

答案 4 :(得分:0)

obj是MyClass类型的引用。当前引用不指向任何内容(即:null)。

答案 5 :(得分:0)

'obj'是变量。它持有引用或null。如果它包含引用,则引用一个对象。

答案 6 :(得分:0)

  • 在Java中,所有对象都通过引用访问,您永远不能直接访问对象本身。
  • reference: - 是一个具有名称且可用于访问对象内容的变量,可以将引用分配给传递给方法的另一个引用,或者从方法返回。所有引用都是相同的大小,无论它们的类型如何"对象对象;"。

  • object: - 是由Java运行时环境分配的内存中存在的实体,一个对象位于堆上并且没有名称Like" Object object = new Object ();"

  • 所以MyClass obj这是引用引用Null。

  • 我们可以用以下两条规则来总结这个原则:

    1. 对象的类型决定了内存中对象中存在哪些属性。
    2. 对象引用的类型确定Java程序可以访问哪些方法和变量。

答案 7 :(得分:0)

引用是一个具有名称的变量,可用于访问对象的内容。引用可以分配给另一个引用,可以传递给方法,也可以从方法返回。

所有引用都是相同大小,无论它们是什么类型。 一个对象坐在堆上,没有名称。因此,除了通过引用,您无权访问对象。对象具有各种不同的形状和大小,并消耗不同数量的内存。一个对象不能分配给另一个对象,也不能将一个对象传递给方法或从方法返回。收集垃圾的是对象,而不是引用。