新手问题。

我已经在基本级别上编程了一段时间了,但是在理解类数据类型时遇到了麻烦。

当我们说int a = 9;
它表示a为数据类型int,表示它只能包含整数。

明智地使用String,boolean,double,float等。

但是请考虑以下代码:

Class Node {

Node next = null;
int data;

public Node(int d){ data = d; }

void append(int d)
    {
        blah blah blah
        ..............
    }
}
Node next = null;是什么意思?我可以理解使用以下命令创建对象的工作
Node next = new Node();

然后尝试操作下一个对象。

最佳答案

这段代码:

Node next = null;

声明一个类型为Node的变量。由于Node是一个类,因此next的值始终是对Node类型的对象或子类的引用,或者对null引用完全不引用任何对象的引用...在这种情况下,变量开始以null的值关闭。

理解next的值永远不是Node对象本身是非常重要的……它只是一个引用。因此,假设我们有:
Node next = new Node(10);
Node foo = next;

在这里,nextfoo是单独的变量,每个变量具有独立的值...但是我们已经将next的值分配为foo的初始值,这意味着它们都引用相同的对象。因此,如果我们打印出foo.data,它将是10。

我喜欢将变量视为纸片-对于引用类型的变量,纸片上写的是房屋的地址或“空”字。如果两张纸上写有相同的地址,则它们指的是同一所房子-但是这两张纸本身是独立的。更改一个变量的值(删除当前地址并写入另一个地址)不会更改其他变量的任何内容……但是无论您使用哪种纸,都可以看到房屋本身的更改(例如将门漆成红色)到那里。

请注意,在您的问题中,您已将Stringintdoubleboolean混为一谈...但是intdoubleboolean是原始类型(其中变量的值只是数据本身-数字等),String是一个类,所以它是一个引用类型。字符串变量的值不是文本本身,而是引用。

10-07 19:15
查看更多