Kotlin使用指南之基本篇一

 2020-01-16 

Kotlin

前言

2019年的Google开发者大会刚刚开完,作为早就被Google确认为官方开发语言的kotlin终于实现了超50%的开发使用量,可以说是可喜可贺。作为一名从java转移到kotlin的开发,这里就总结一下自己学习kotlin时一些心得。

  • 变量:

首先kotin中变量的生命的格式如下

var/val 变量名:变量类型

基本的元素包含是变量还是常量,以及变量名。如果声明时带有赋值的话,后面的变量类型可以省略,kotlin会根据赋值自动推算出类型。

  • 类型:

Kotlin中多有的东西都是对象,那你可能就会想,是不是也就不会有java中的基本类型(int)和包装类型(Integer)的区分?

其实在kotlin中还是有的,当声明为可空类型的时候kotlin就会产生一个包装类型的数据,也就是说Int?就相当于Integer

  • 这里要注意的地方是

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

由于没找到怎么添加表格大家先将就着看一下哈

对于同一个基本类型的变量进行装包之后的装包类型不相同,即

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中运算符被看做是类的一部分,也就是说运算符是可以被重载的,当然,你也可以为你自己编写的类添加运算符,这个我们之后会讲
  • Kotlin中位运算的运算符与java不同,具体的对应关系我这就不赘述了,网上查得到
  • Kotlin中没有三元运算符?用下面的代码可以起到一样的作用

val c = if (a > b) a else b

  • Kotlin中运算符被看做是类的一部分,也就是说运算符是可以被重载的,当然,你也可以为你自己编写的类添加运算符,这个我们之后会讲
  • Kotlin中位运算的运算符与java不同,具体的对应关系我这就不赘述了,网上查得到
  • Kotlin中没有三元运算符,可用下面的代码可以起到一样的作用

val c = if (a > b) a else b

  • Kotlin中特有的运算符:
    1. ..:区间运算符1..6表示一个1到6的可迭代数列,注意不是List欧
    2. in:相当于于Java中List的contains
    3. is:相当于Java中instance of