前言
2019年的Google开发者大会刚刚开完,作为早就被Google确认为官方开发语言的kotlin终于实现了超50%的开发使用量,可以说是可喜可贺。作为一名从java转移到kotlin的开发,这里就总结一下自己学习kotlin时一些心得。
-
变量: 首先kotin中变量的生命的格式如下
var/val 变量名:变量类型基本的元素包含是变量还是常量,以及变量名。如果声明时带有赋值的话,后面的变量类型可以省略,kotlin会根据赋值自动推算出类型。
-
类型:
-
Kotlin中多有的东西都是对象,那你可能就会想,是不是也就不会有java中的基本类型(int)和包装类型(Integer)的区分?
其实在kotlin中还是有的,当声明为可空类型的时候kotlin就会产生一个包装类型的数据,也就是说Int?就相当于Integer
这里要注意的地方是
-
对于同一个基本类型的变量进行装包之后的装包类型不相同,即
val a: Int = 10000 val boxedA: Int? = a val anotherBoxedA: Int? = a boxedA !== anotherBoxedA -
对于同一个基本类型的变量进行装包之后的装包类型的值相同,即
val a: Int = 10000 val boxedA: Int? = a val anotherBoxedA: Int? = a boxedA == anotherBoxedA
-
-
Kotlin 中的数字没有隐式拓宽转换,下面的例子在Java上是没有问题的,但是在Kotlin中是不允许的,因为方法的入参类型为Long,Kotlin不会自动将Int转换为Long。
public static void main(String[] args) { int test1 = 2; test(test1); } static void test(long i) { }同样的Long型的变量不能使用Int型的赋值方法,下面的代码在Kotlin中也是不允许的。
var testI: Int =2 var testL: Long = testI这里有一点需要注意的是虽然Long和Int的有上边的限制不能互相隐式拓宽但是下面的代码是被允许的,Kotlin会重载运算符,帮助我们实现转换,所以我们日常写代码的时候其实不太会关心这个没有隐式转换的问题
var testI: Int = 200 var testL: Long = 200L val result = testI + testL -
Kotlin中各个类型的基本信息
类型 大小(比特数) 最小值 最大值 Byte 8 -128 127 Short 16 -32768 32767 Int 32 -2,147,483,648 (-231) 2,147,483,647 (231 - 1) Long 64 -9,223,372,036,854,775,808 (-263) 9,223,372,036,854,775,807 (263 - 1) 类型 大小(比特数) 有效数字比特数 指数比特数 十进制位数 Float 32 24 8 6-7 Double 64 53 11 15-16
-
-
运算符
运算符Kotlin与java的差异并不大,需要注意的有以下几点
-
Kotlin中运算符被看做是类的一部分,也就是说运算符是可以被重载的,当然,你也可以为你自己编写的类添加运算符,这个我们之后会讲
-
Kotlin中位运算的运算符与java不同,具体的对应关系我这就不赘述了,网上查得到
-
Kotlin中没有三元运算符?用下面的代码可以起到一样的作用
val c = if (a > b) a else b -
Kotlin中特有的运算符:
..:区间运算符1..6表示一个包含[1,2,3,4,5,6]的List in:相当于于Java中List的contains is:相当于Java中instance of
-
基础部分就先整理到这里,将来会陆续整理Kotlin中其他的部分,喜欢的朋友可以关注我的公众号,会经常发布一些技术文档,扫描下方二维码关注欧。