使用Kotlin的数字操作是否像Java原语一样快?

Java有原始语言,因为使用它们会导致比基于类的对应语言更高效,可读和更少错误的代码 。

Kotlin是否执行编译时优化以确保编号操作与Java基元相同(或更好)的性能?

是的,Kotlin也使用原始的。 但请注意:

  1. “不太容易出错”的原因在Kotlin中并不适用:除非你要求,否则盒装类型不能为空(就像原语一样),你不能混淆==equals

  2. “更具可读性”:你可以在两者上使用运算符。

  3. “更高效”的部分是非常适用的,但是你不能在链接的问题的最上面的答案中提到的一个字符的印刷错误:你必须编写java.lang.Long来获得盒装类型!

另一方面,你需要注意IntArrayArray<Int> (对应于Java int[]java.lang.Integer[] )效率更高,尽管两者似乎都使用Int

引用文档 :

一些类型可以有一个特殊的内部表示 – 例如,数字,字符和布尔值可以在运行时表示为原始值 – 但对于用户来说,它们看起来像普通的类。 在本节中,我们将介绍Kotlin中使用的基本类型:数字,字符,布尔值,数组和字符串。

所以是的,编译器会在运行时使用JVM基元类型进行优化。 当然有一些例外:

在Java平台上,除非我们需要一个可为空的数字引用(例如Int?)或涉及泛型,否则数字在物理上存储为JVM基本类型。 在后者的情况下,数字是盒装的。

源文档中还有一个提示,例如Int

表示一个32位有符号整数。 在JVM上,这种类型的非空值被表示为基本类型int的值。