大家好,欢迎加入小李君的Kotlin学习之旅。今天是小李君学习Kotlin的第四天。
来段学习小结
经过前三天的getting started式的快速学习,小李君从无到有地认识Kotlin是个什么东西(JVM语言),能干什么(通吃Android,SpringBoot,Javascript,IOS),掌握基本语法糖(能写变量常量if-else-when判断for-while循环fun函数class类array数组)。也就是说,小李君目前已经大概看懂80%的kotlin代码了,还有最后20%需要通过研习官方文档各个专题来深度学习(不是deep learning)。
插播人生套路
学习新语言必经这几个过程:
- getting started,快速入门,快速熟悉掌握新语言环境,做到能看懂,也能在别人的代码上改改。
- reference,参考手册,深入每个专题,反复看反复练,把基础打牢固,同时能独立完成一个功能完整的应用程序,无论是后端应用还是移动客户端应用。
- library source code,语言本身的内核源代码,了解语言环境本身能提供什么工具给开发者使用,全面认识语言内核源代码的组织架构(包的结构划分,类的组织方式,方法的设计规律)。
- compile environment,(暂时不说了,这是连小李君都还没达到的高度,跪求大神带着飞)。
- 写写学习总结,忘记这门语言。
开始进入正题
Kotlin的基本类型与Java & Javascript差不多,同时也借鉴了其他语言的优点,大概能够划分为:Number,Character,Boolean,Array,String。
Number - 数字类型
Number作为一个概念代表所有数字的表示(概念上like javascript),但在具体类型实现中,非常接近Java的类型。
Type | Bit width | Range |
---|---|---|
Double | 64 | 2^64 |
Float | 32 | 2^32 |
Long | 64 | 2^64 |
Int | 32 | 2^32 |
Short | 16 | 2^16 |
Byte | 8 | 2^8 == 256 |
值得一提的是Kotlin支持Java7的一个重要特性:数字下划线分割。
- 299312 == 299_312
关于Number的其他内容,其实也没啥特别,就是===这个很直;Long是Long,Int是Int,一点也不含糊。
Character - 字符类型
字符也没啥内容,就是跟===一样很直,Character是Character,Int是Int,两者不能自动转换,也不相等。以后用到字符类型的机会其实还蛮少的。
Boolean 布尔类型
true false,没了。
Array 数组类型
Kotlin的数组类型可谓取其精华去其糟粕。
全局函数 arrayof( 5, 6, 7 ) 创建了一个数组[ 5, 6, 7 ];
工厂方法 Array( 3, { i -> i + i } ) 创建了一个数组 [ 0, 2, 4 ];
抛弃了 Int [ ] 这些写法,直接用 Array<Int> 或 IntArray;
访问数组元素还是可以直接 arr [ 0 ] 这样子。
String 字符串
字符串的亮点在于 """ 这三个双引号和模板技术。
其中,三个双引号来自于Python语言特性,能够多行显示字符串,直接编写转义字符,并且还能保留换行格式。
还有,模板技术来自于Linux Bash Shell语言特性,参数展开和表达式展开,老司机都懂的。