指针如何与Java中的原始类型一起使用?

Evo*_*lor 7 java pointers primitive-types

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

int x;
x = 10;
Run Code Online (Sandbox Code Playgroud)

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

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

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

mat*_*aly 10

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

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类/引用/对象类型)之间的差异.他们有一个漂亮的图表来说明它.