Java中的引用和对象有什么区别?

2022-09-02 02:18:16

我有类GUI,所以我可以创建这样的对象:

GUI g1 = new GUI();

和一个类似如下的引用变量:

GUI g2;

据我所知,g2是一个引用变量,它引用GUI类,g1是GUI类的对象。g1 和 g2 有什么区别?我可以将 GUI 类的属性与对象一起使用,但是 g2 的可能用法是什么?


答案 1

引用是名称。物体就是东西。你可以为东西使用不同的名称,即使对于实际上不存在的东西也是如此。

你可以声明名称,而不实际赋予它们任何“真实”的含义,如下所示:

GUI g1;

您可以使用 = 运算符为名称分配含义(要引用的真实内容):

GUI g1 = some_gui;

名称可以随着时间的推移而改变其含义。同一个名字可以指历史上不同时期的不同事物。

GUI g1 = some_gui;

doSomething();

g1 = some_other_gui;

还有同义词:多个名称可以指同一件事:

GUI g2 = g1;

这几乎就是参考文献的作用。它们的名字意在指代东西。

可以创建内容:

new GUI();

可以当场创建和命名内容以供以后参考(字面意思!

GUI g1 = new GUI();

可以使用它的名字(或任何名字!)来引用东西:

g1.doSomething();
g2.doSomethingAgain();

可以创建相同种类(类)的不同内容,并以不同的方式命名:

GUI g1 = new GUI();
GUI g2 = new GUI();
GUI g3 = new GUI();

GUI g1_synonym = g1;

:)


答案 2

Java中的引用和对象有什么区别?

引用是一个实体,它提供了一种访问其类型对象的方法。对象是一个实体,它提供了一种访问其类或类型成员的方法。

通常,如果没有对对象的引用,则无法访问该对象。

class GUI
{
    void aMethod()
    {
        // some business logic.
    }
}

可以使用或不带引用进行调用。但你肯定需要一个对象。aMethod

无参考:

new GUI().aMethod(); 
// you can't reuse the object
// bad way to code.

参考:

GUI aGUIReference = new GUI();
aGUIReference.aMethod();
// Now, the object can be reused.
// Preferred way to code

现在对代码行进行一些解释:

GUI g1 = new GUI();
// g1 is a reference to an object of GUI class.

GUI g2;
// g2 is a reference that can point to an object of GUI class
// but currently not pointing to any.

b/w 的唯一区别是使用对象初始化,但指向g1g2g1g2null

g2 = g1;
// it means g2 will point to the same object g1 is pointing to
// only one object but two references.