作者:摩羯水瓶的微博w | 来源:互联网 | 2022-10-16 15:07
Kotlin是否具有原始类型?当我声明变量时:val myAge: Int = 18
那么myAge
变量存储的实际值是18
还是将对象的地址存储在内存中?如果Int
是原始类型,那为什么我们可以使用它的方法myAge.minus(10)
呢?
1> Cililing..:
不,是的。
Kotlin没有原始类型(我的意思是您不能直接声明原始)。它使用类,比如Int
,Float
作为一个基元对象封装。
当kotlin代码转换为jvm代码时,只要有可能,“原始对象”就会转换为java原语。在某些情况下,这无法完成。这些情况是例如“原始语”的集合。例如,List
不能包含原语。因此,编译器知道何时可以将对象转换为原始对象。而且,它与java非常相似:
List numbers = new ArrayList<>;
numbers.add(0); // <-- you use primitive, but in fact, JVM will convert this primitive to object.
numbers.add(new Integer(0)); // <-- We don't need do that.
另外,当您声明“可空基元”时,它永远不会转换为基元(这很明显,因为基元不能为空)。在Java中,它的工作原理非常相似:
int k = null; // No way!
Integer kN = null; // That's OK.
还有一件事-文档对此有何评论?
对于Common,JVM,JS
表示一个32位有符号整数。在JVM上,此类型的非空值表示为原始类型int的值。
对于本地人
表示一个32位有符号整数。
@see:https : //kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html
所以,最后一个结论。Kotlin没有开箱即用的原始类型。您将所有对象都视为对象。转换为原语比代码要低一些。使该设计保持与JVM的兼容性。
嗯 更直接地说:** Kotlin语言没有基元;它的实现可以在可能的情况下使用它们。**在JVM上,这通常意味着值不可为空且未被引用。