Kotlin中Int和Integer的区别是什么?

Kotlin中Int和Integer的区别是什么?,kotlin,Kotlin,我试过在Kotlin中使用Int和Integer类型,虽然我没有看到任何区别。 Kotlin中的Int和Integer类型之间是否有差异?或者它们是否相同?aInt是一种基本类型。这相当于jvmint 可为空的IntInt?是装箱类型。这相当于java.lang.Integer只要看看 在Java平台上,数字被物理存储为JVM原语 类型,除非我们需要可为空的数字引用(例如Int?)或 涉及仿制药。在后一种情况下,数字被装箱 这意味着,Int表示为基元Int。只有在涉及可空性或泛型的情况下,才必须

我试过在Kotlin中使用Int和Integer类型,虽然我没有看到任何区别。
Kotlin中的Int和Integer类型之间是否有差异?或者它们是否相同?

a
Int
是一种基本类型。这相当于jvmint

可为空的Int
Int?
是装箱类型。这相当于
java.lang.Integer

只要看看

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

这意味着,
Int
表示为基元
Int
。只有在涉及可空性或泛型的情况下,才必须使用支持包装类型
Integer

如果从一开始就使用
Integer
,则始终使用包装类型,而从不使用原语
int
int
是从
Number
派生的Kotlin类

[Int]表示32位有符号整数。在JVM上,不可为null的值 此类型表示为基本类型int的值

Integer
是一个Java类

如果要在Kotlin规范中搜索“整数”,则没有Kotlin
Integer
类型

如果在IntelliJ中使用表达式
is Integer
,IDE会发出警告

此类型不应在Kotlin中使用,请改用Int

Integer
将与Kotlin Int很好地互操作,但它们在行为上确实存在一些细微的差异,例如:

val one: Integer = 1 // error: "The integer literal does not conform to the expected type Integer"
val two: Integer = Integer(2) // compiles
val three: Int = Int(3) // does not compile
val four: Int = 4 // compiles
在Java中,有时需要将整数显式地“装箱”为对象。在Kotlin中,只有可为空的整数(
Int?
)被装箱。显式尝试框选不可为空的整数将导致编译器错误:

val three: Int = Int(3) // error: "Cannot access '<init>': it is private in 'Int'
val four: Any = 4 // implicit boxing compiles (or is it really boxed?)

相关:当与泛型一起使用时,不可为null的
Int
将被装箱。例如,
List
将包含装箱整数。由于我在文档中找不到线索,您能添加一个引用吗?
when(four) {
    is Int -> println("is Int")
    is Integer -> println("is Integer")
    else -> println("is other")
} //prints "is Int"
when(four) {
    is Integer -> println("is Integer")
    is Int -> println("is Int")
    else -> println("is other")
} //prints "is Integer"