2011-03-01 69 views
12

在Java中,如果我声明参考,对象VS Java中

MyClass obj; 

是OBJ称为 “参考” 或 “对象”。我没有在这里实例化类。

+0

只是一个有趣的事实,在C++中这将实例化一个对象:-)。 – helpermethod 2011-04-26 22:55:42

回答

15

obj是对MyClass实例的引用。

目前,该参考值是NULL,因为你没有指定它来指任何实例。

技术上MyClass的必须是Object的子类,因此可以说obj为参考对象的实例,以及。

2

在计算机科学中,参考是 值,它允许一个程序来 间接访问特定数据 项,如一个变量或在计算机的存储器或在一些 其他存储设备的记录, 。参考是 表示参考数据项,而 访问该数据被称为 取消参考参考。

在计算机科学中,对象是能够由一种编程语言的指令 被操纵任何 实体, 诸如值,变量,函数,或 数据结构。 (随着后来 引入 编程同一字的面向对象的,“对象”的, 指 类的特定实例)

所以obj为参考和new MyClass()可以看作是一个对象

+1

新的MyClass()*创建*一个对象,但*产生*引用作为其结果。 – EJP 2011-03-01 22:30:28

0

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

1

有时你会听到人们说:“设计是需要一个对象作为参数的方法......”

如果你是新的节目,特别是与Java,这样的言论可能会导致一些混乱。这些人正在使用“对象”这个词来用一般的OOP术语来指代一个类的实例,而不一定是Java特定的。

当我们谈论Java和你那里的代码细节,它要的MyClass一个实例,它是空的参考。

0

'OBJ' 是可变。它保存无论是参考或null。如果它持有一个引用,那是指一个对象。

+0

我见过一些空的引用异常,可能会不同意这条语句:P – Jeff 2011-03-01 23:03:38

+0

@Jeff:不,你已经看到了一些空*指针异常。指针是一个引用或null。 – EJP 2011-03-01 23:06:48

+0

你说得对。我将Java与C#混淆了,它确实有空引用异常。 – Jeff 2011-03-02 00:57:37

11

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

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

实施例:

MyClassI aObj,aObj1; 

aObj=new MyClass2(); 

在第一线aObj和aObj1是引用

在第二线aObj引用MyClass2的到对象(New运算创建Myclass2和的一个目的其地址分配给aObj)。

要了解更好的考虑 一类车,其具有DRIVERNAME作为成员..

Car c1,c2; 

c1.driverName="Andrew" 

c2.driverName="Gabriel" 

System.out.println(c1.driverName);//gives Andrew 

Sytem.out.println(c2.driverName);//gives Gabriel 

c1=c2; 

c2=null; 

//gives gabriel bcuz 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); 
0
  • 在Java中,所有的对象都通过引用访问,你从来没有对象本身直接访问。
  • 参考: - 是一个具有名称并可用于访问对象内容的变量,可将引用分配给传递给方法的另一个引用或从方法返回的引用。所有引用都是相同的大小,不管它们的类型是什么像“Object object;”。对象: - 是由Java运行时环境分配的内存中存在的实体,对象位于堆上,没有名称像“Object object = new Object();”。

  • so MyClass obj这里是参考提到空。

  • 我们可以总结这一原理用下面的两个规则:

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