Java 基元类型:整型与整数

2022-09-02 12:24:30

我对何时在Java中使用基元与非原语(?)类型(即int与整数)感到困惑。我意识到在某些地方你不能使用基元类型(例如,在使用泛型时)。但是在“正常”代码中呢?使用非基元类型是否会降低性能?使用安卓系统时呢?

我的问题与这个问题非常相似,这个问题是由下面的一张海报发现的。链接问题的答案提供了有关此问题的其他见解,下面不做介绍。

“非基元”类型被正式称为引用类型。


答案 1

简短的回答:An是一个数字;a 是一个指针,可以引用包含数字的对象。用于算术涉及更多的 CPU 周期并消耗更多的内存。An 不是对象,不能传递给任何需要对象的方法(就像你说的泛型一样)。intIntegerIntegerint


答案 2

非基元类型是对象。它们必须动态分配,垃圾回收并检查空值性(尽管其中一些操作可能会被优化编译器删除)。读取其实际值需要从指针加载。基元类型是值。它们通常占用更少的空间,并且访问速度更快。

一个好的经验法则是,除非需要多态性,否则使用基元类型,在这种情况下,请使用相应的对象。