指针如何在Java中使用原始类型?

我正在阅读什么是NullPointerException,我该如何修复它? 在接受的答案中,我读到了一些我不太了解的内容:

int x; x = 10; 

在这个例子中,变量x是一个int,Java会将它初始化为0。 当您在第二行中将其分配给10时,您的值10将被写入x指向的内存位置。

我想原始类型,变量是实际值的内存地址; 对于复杂类型,变量仅仅是指向实际值的指针的内存地址。 但上面引用的答案告诉我,我错了。 它说“x指向的内存位置”。

因此,如果x指向存储实际值的内存地址,那么原始类型与复杂类型的不同之处是什么? 我不知道原始类型甚至有指针。 指针如何与原始类型一起使用?

原始类型和复杂类型主要在于存储数据的方式上彼此不同。 您实际上在查看基本类型和类类型之间的差异

1.每个变量都存储在计算机内存中的一个位置。

上述语句既适用于原始类型,也适用于类类型。

差异:

2.对于基本类型:变量的值存储在分配给变量的存储器位置中

这意味着如果我们分配int x = 10 ,则x的值存储在存储值10的位置,即存储位置。 这意味着当我们“看”x时,’10’存储在那里。 也许将它更像是一个“赋值”,你命令x等于10。

3.对于类类型:它仅存储存储该值的对象的内存地址。 它不直接保持对象本身。

整数x = 10将有一个指向int类型对象的内存地址,然后它将保持值10.这称为引用 。 可以将其视为目录,告诉您转到哪个架子来实际检索该值。

类类型也称为引用类型或对象类型,它们都表示类的对象(无论是Integer类还是MyPerson类)。

原始类型不是引用类型,因为它们不包含引用 (内存地址)。

这种区别是日常使用中“包装类”的原因,并且诸如Integer类的类型被视为int的包装类,以允许数据操作,例如在数据结构(例如ArrayList)中存储整数。 因为ints是原始数据类型,所以不是object ,而Integer是。 由于原始类型不是对象 ,我们必须将它们放入一个类中,以便我们将它们添加到Lists,Dictionaries等。这样我们就有了一个对象列表(指向原始类型),但它们不是裸原始数据类型本身。 有关详细信息,请参阅此SO问题

此处详细介绍了原语和非原语(aka类/引用/对象类型)之间的差异。 他们有一个漂亮的图表来说明它。