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();
然后尝试操纵下一个对象。
答案 0 :(得分:5)
此代码:
Node next = null;
声明类型为Node
的变量。由于Node
是一个类,next
的值始终是一个引用 - 要么是Node
类型的对象,要么是子类,要么null
引用不是完全引用任何对象......在这种情况下,变量的开头值为null
。
理解next
的价值永远不会一个Node
对象本身非常重要......它只是一个参考。所以我们假设:
Node next = new Node(10);
Node foo = next;
此处,next
和foo
是单独的变量,每个变量都有独立的值......但我们已将next
的值指定为foo
的初始值,这意味着他们都引用同一个对象。因此,如果我们打印出foo.data
,它将为10。
我喜欢将变量视为纸张 - 在参考类型的变量的情况下,在纸上写的是房子的地址,或“null”这个词。如果两张纸上写有相同的地址,则它们指的是同一个房子 - 但这两张纸本身是独立的。更改一个变量的值(跨越当前地址并写入另一个变量)不会改变其他变量的任何内容......但是更改 house本身(例如,你可以看到用来到那里的那张纸。
请注意,在您的问题中,您已将String
与int
,double
和boolean
混为一谈......但是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运算符实例化的对象。