Min*_*yen 1 reference-type primitive-types kotlin
Kotlin是否具有原始类型?当我声明变量时:val myAge: Int = 18那么myAge变量存储的实际值是18还是将对象的地址存储在内存中?如果Int是原始类型,那为什么我们可以使用它的方法myAge.minus(10)呢?

简短回答 -是的,取决于声明。
val myAge: Int = 18 // this is primitive
val myAge2: Int? = 18 // this is not
Run Code Online (Sandbox Code Playgroud)
有一个关于该https://www.youtube.com/watch?v=Ta5wBJsC39s 的信息量很大的视频
不,是的。
Kotlin没有原始类型(我的意思是您不能直接声明原始)。它使用类,比如Int,Float作为一个基元对象封装。
当kotlin代码转换为jvm代码时,只要有可能,“原始对象”就会转换为java原语。在某些情况下,这无法完成。这些情况是例如“原始语”的集合。例如,List<Int>不能包含原语。因此,编译器知道何时可以将对象转换为原始对象。而且,它与java非常相似:
List<Integer> 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.
Run Code Online (Sandbox Code Playgroud)
另外,当您声明“可空基元”时,它永远不会转换为基元(这很明显,因为基元不能为空)。在Java中,它的工作原理非常相似:
int k = null; // No way!
Integer kN = null; // That's OK.
Run Code Online (Sandbox Code Playgroud)
还有一件事-文档对此有何评论?
对于Common,JVM,JS
表示一个32位有符号整数。在JVM上,此类型的非空值表示为原始类型int的值。
对于本地人
表示一个32位有符号整数。
@see:https : //kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html
所以,最后一个结论。Kotlin没有开箱即用的原始类型。您将所有对象都视为对象。转换为原语比代码要低一些。使该设计保持与JVM的兼容性。