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

类数据类型在java中的意义是什么?,java,types,Java,Types,诺布问题 我已经在基础级别编程了很长一段时间,但我很难理解类数据类型 当我们说inta=9 这意味着数据类型为int,意味着它只能包含整数 像字符串、布尔、双精度、浮点等的wise 但请考虑下面的代码: Class Node { Node next = null; int data; public Node(int d){ data = d; } void append(int d) { blah blah blah ..............

诺布问题

我已经在基础级别编程了很长一段时间,但我很难理解类数据类型

当我们说
inta=9
这意味着数据类型为int,意味着它只能包含整数

像字符串、布尔、双精度、浮点等的wise

但请考虑下面的代码:

Class Node {

Node next = null;
int data;

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

void append(int d)
    {
        blah blah blah
        ..............
    }
}
节点的下一步是什么=null平均值?我可以理解创建具有

Node next = new Node();

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

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

因此没有添加下一个“邻居”节点。

Node next = null;
这意味着您定义了一个变量
next
,该变量只包含对类型(类)
节点
的对象的引用。此外,还可以使用
null
值初始化它,这意味着
尚未创建任何对象


这些变量实际上包含对对象的引用,
null
是一个特殊值,仅对表示变量为空的对象有效。如果
next
仍然是
null
节点next=null,则类似于
next.append()
的操作将失败,并出现null指针异常;是一种指向NodeObject的指针。这就像声明一个尚未初始化的变量。 在这种情况下,对象可能会在以后实例化。 如果将已经存在的对象设置为空值,如果没有对同一对象的其他引用,则垃圾收集器将删除该对象

我已经在基础级别编程了很长一段时间,但我很难理解类数据类型。 当我们说int a=9时;这意味着数据类型为int,意味着它只能包含整数。 像字符串、布尔、双精度、浮点等的wise

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

此代码:

Node next = null;
声明类型为
Node
的变量。由于
Node
是一个类,
next
的值始终是一个引用-指向类型为
Node
的对象或子类,或者指向根本不指向任何对象的
null
引用。。。在这种情况下,变量的起始值为
null

理解
next
的值决不是
节点
对象本身,这一点非常重要。。。这只是一个参考。因此,假设我们有:

Node next = new Node(10);
Node foo = next;
这里,
next
foo
是独立的变量,每个变量都有独立的值。。。但是我们已经将
next
的值指定为
foo
的初始值,这意味着它们都指向同一个对象。因此,如果我们打印出
foo.data
,它将是10

我喜欢把变量想象成一张纸——对于引用类型的变量,写在纸上的是房子的地址,或者“null”一词。如果两张纸上写着相同的地址,它们指的是同一所房子——但这两张纸本身是独立的。更改一个变量的值(划掉当前地址并写入另一个)不会更改其他变量的任何内容。。。但是,无论你使用哪一张纸到达那里,都可以看到房子本身的变化(例如,将门漆成红色)


请注意,在您的问题中,您将
字符串
int
双精度
布尔值
。。。但是,
int
double
boolean
是基本类型(变量的值只是数据本身-数字等),
String
是一个类,因此它是一个引用类型。字符串变量的值不是文本本身,而是引用。

否,
next
根本不包含对象。它保存引用,
null
是一个不引用任何对象的引用。没有“空”变量——变量有一个定义良好的值,它是空引用。我仍然不喜欢如果值为空,变量就是“空”的想法。这是一个完全有效的值,它占用了相同的空间,等等-它只是指没有对象。特别值得注意的是,“明确赋值,且值为空”与尚未明确赋值的变量非常不同。不,它是初始化的。。。使用
null
值。变量有一个存储位置,但它的值(null)不引用任何特定的对象。是的,这样更好。我认为有必要更详细地说明这到底意味着什么(根据我的回答),但至少现在它是准确的:)Java引用变量是否真的“指向内存位置”值得商榷。(我知道有一个JVM实现,其中引用根本没有作为指针实现!)@Stephen C-您能详细解释一下吗?我现在正在学习这种语言,它对我来说很有趣。