我正在阅读什么是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
而是。由于基本类型不是对象,因此必须将它们放入类中才能将它们添加到列表,字典等中。这样,我们就有了对象列表(指向原始类型),但它们不是对象。裸原始数据类型本身。有关更多信息,请参见此SO问题
此处详细介绍了有关原始类型和非原始类型(aka类/引用/对象类型)的区别的其他阅读。他们也有一个很好的图表来说明这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句