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