java中类数据类型的意义是什么?

时间:2011-04-12 05:58:02

标签: java types

Noob问题。

我已经在基础级编程了很长一段时间但我无法理解类数据类型。

当我们说int a = 9;时 它表示数据类型为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();

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

4 个答案:

答案 0 :(得分:5)

此代码:

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。

我喜欢将变量视为纸张 - 在参考类型的变量的情况下,在纸上写的是房子的地址,或“null”这个词。如果两张纸上写有相同的地址,则它们指的是同一个房子 - 但这两张纸本身是独立的。更改一个变量的(跨越当前地址并写入另一个变量)不会改变其他变量的任何内容......但是更改 house本身(例如,你可以看到用来到那里的那张纸。

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

答案 1 :(得分:3)

该行

Node next = null;

表示您定义一个变量next,它仅包含对类型(类)Node的对象的引用。另外,您使用null值初始化它,这意味着no object created yet

这些变量实际上包含对象的引用,null是一个特殊值,仅对表示变量为空的对象有效。如果next.append()仍为next,则类似null的内容将失败,并显示nullpointer异常。

答案 2 :(得分:0)

Node next = null表示此变量使用null值初始化,并且不指向任何内存位置。

所以没有添加下一个“邻居”节点。

答案 3 :(得分:0)

Node next = null;是一种指向NodeObject的指针。这就像声明一个尚未初始化的变量。 在这种情况下,该对象可能稍后将被实例化。 如果将现有对象放入空值,如果没有对同一对象的其他引用,则垃圾收集器将删除它。

  

我已经在基础级编程了很长一段时间但我无法理解类数据类型。   当我们说int = 9;它表示数据类型为int意味着它只能包含整数。   像String,boolean,double,float等一样明智。

注意int和Integer在Java中是不同的。 int是基本类型,它不是对象。整数是一个可以用new运算符实例化的对象。