数据类型
Kotlin是一门强类型语言,在声明变量时,必须先声明其类型,并且变量的类型不可变,与值类型需匹配。同时,Kotlin也是一门静态类型语言,在编译期间就会对变量类型进行检测,如果不通过就会编译报错。
值类型与引用类型
Java 把基本数据类型和引用类型做了区分。一个基本数据类型(如int
)的变量直接存储了它的值,而一个引用类型(如 String
)的变量存储的是指向包含该对象的内存地址的引用。基本数据类型的值能够更高效地存储和传递,但是你不能对这些值调用方法,或是把他们存放在集合中。 Java 提供了特殊的包装类型(如Integer
)在你需要对象的时候对基本数据类型进行封装。因此,你不能用 Collection<int>
来定义一个整数的集合,而必须用Collection<Integer>
来定义。
与Java不同的是Kotlin并不区分基本类型和包装类型,在编码阶段,他只有一个类型Int
,避免了Java中基本数据类型与包装类型的转换以及混乱的其他问题。
虽然 kotlin 是用同一个类型表示基本数据类型和引用类型,但是在运行时,数字类型会尽可能地使用最高效的方式来表示。大多数情况下,对于
变量
属性
参数
返回类型
kotlin 的 Int
类型会被编译成 Java 基本数据类型 int
。唯一例外是泛型类
,会被编译成对应的 Java 包装类:
上述代码编译为class的Java表现为:
字面量
字面量是指直接表示数据值的语法表示法。Kotlin支持多种类型的字面量:
10
如果不超过Int最大值,类型为Int;如果超过Int最大值,类型为Long
十进制
10L
Long
十进制
0b101
Int,超为Long
八进制
0x0F
Int,超为Long
十六进制
0b00001011
Int,超为Long
二进制
1_000_000
Int,超为Long
下划线易读表示
999_99_9999L
Int,超为Long
下划线易读表示
0xFF_EC_DE_5E
Int,超为Long
下划线易读表示
0b11010010_01101001_10010100_10010010
Int,超为Long
下划线易读表示
1.23
Double
1.23f
、1.23F
Float
1.23e-4
Double
科学计数法
Double/Float.NaN
Double/Float
表示非数字
Double/Float.*_INFINITY
Double/Float
表示无穷大、无穷小
'a'
Char
"abc"
String
true
Boolean
false
Boolean
null
空
[1,2,3]
in 数组
1...10
in 范围
表示从1到10的范围
最后更新于
这有帮助吗?