Java有两种数据类型:引用类型和基本数据类型。 形如int count = 5; 这样,以小写字母开头的是基本数据类型; 形如Integer count = 5; 这样,Java引用类型名总是由大写字母开头。 所有基本数据类型都有相对应的引用类型,但不是所有引用类型都有相对应的基本类型。那该如何选择各自的使用场景呢? 需要选用引用类型的一大原因,某些Java语言特色功能只有引用类型才支持,例如泛型就不支持基本数据类型、以及面向对象的特色功能。 当然,基本数据类型也有其优点,而且性能表现比引用类型好。 和Java不同,Kotlin只提供引用类型这一种数据类型。
var count: Int = 5
Kotlin这样设计基于几大理由。首先,只有一种数据类型可选,就不容易因选项多而选错,进而陷入编码困境。例如:定义了一个基本数据类型后,写着写着,发现要用到只有引用类型才支持的泛型功能,怎么办?Kotlin通过只提供一种类型规避了此问题。 但基本数据类型的性能要好于引用类型,没错,是这样的。 原来,只要有可能,出于更高性能的需要,Kotlin编译器会在Java字节码中改用基本数据类型。
Kotlin源码中,变量的类型定义已省略。
Tools -> Kotlin -> Show Kotlin Bytecode 打开字节码工具窗口,单击左上角的Decompile按钮,把字节码转译为Java语言。 (红色波浪线表明Kotlin与Java交互过程中出现了偶发小问题,代码本身没有问题。) 在字节码中,看到了它们的显示类型定义。由此可见,Kotlin支持类型推断
字节码的Java翻译版
|