Kotlin 的 Float、Int 等是否针对 JVM 中的内置类型进行了优化? [复制]

2024-01-08

我是 Kotlin 的新手,AFAICT 的语法仅支持 Int、Float 等对象版本,而不支持 Java 的相应 int 和 float 原语。但是如果可能的话,编译器或 JVM 是否会优化以使用原始类型?我担心如果我在从游戏主循环调用的函数中使用局部变量,如果 JVM 必须每次都创建一个对象而不是使用原始类型,则可能会导致 GC 断断续续。


引用docs https://kotlinlang.org/docs/reference/basic-types.html:

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

所以是的,编译器确实以这样的方式进行优化:JVM 原始类型 https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html在运行时使用。当然也有一些例外:

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

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

表示 32 位有符号整数。在 JVM 上,该类型的不可空值表示为基本类型 int 的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin 的 Float、Int 等是否针对 JVM 中的内置类型进行了优化? [复制] 的相关文章

随机推荐