kotlin笔记一

kotlin常识

Kotlin 是由JetBrains公司开发的,2011年发布第一个版本,2016年发布正式版。

C和C++都属于编译型语言,由编译器将源代码一次性的编译成计算机可识别的二进制文件。而Python和Javascript都属于解释性语言,在程序执行时一行行的解释成二进制数据。但Java和kotlin也属于解释型语言,他们先将源代码编译成class文件,然后再通过java虚拟机进行解释运行。


变量

Kotlin的语法更加简洁,同样的功能,比java减少50%的代码量,除此之外,还增加了很多现代高级语言的语法特性,而且杜绝了空指针问题。

kotlin中基本变量不需要声明变量类型,但是需要使用val或var两个关键字,val代表不可变变量,var代表可变变量。

但我们也可以显式的声明变量类型 例如 val a: Int =a

相比与java中的基本数据类型,在kotlin中的基本数据类型都是对象数据类型。


函数

函数和方法是同一个概念,只是叫法习惯不一样,并没有什么区别。

当一个函数中只有一行代码时,我们可以直接将唯一的一行代码写在函数定义的尾部,用等号连接,例如

1
2
3
 fun largerNumber(num1:Int,num2:Int):Int{
return max(num1,num2)
}

等于

1
fun largerNumber(num1:Int,num2:Int):Int = max(num1,num2)

其中,可以推导出函数返回值必然是一个Int,所以可以进一步简化

1
fun largerNumber(num1:Int,num2:Int) = max(num1,num2)

逻辑控制

if条件语句

和Java中的if语句唯一的区别就是可以拥有返回值
例如:

1
2
3
4
5
6
val value = if(1>2){
1
}else{
2
}

返回值就是if语句每一个条件中的最后一行代码的返回值。
所以此时value的值为2

when条件语句

Kotlin中的when类似于java中的switch,但又比switch强大 ,when拥有返回值,只会返回匹配的行
例如

1
2
3
4
5
6
fun getScore(name:String) = when(name){
"Tom" -> 86
"Jim" -> 77
"Jack"-> 95
else -> 0
}

并且还可以进行类型匹配

1
2
3
4
5
6
7
fun checkNumber(num: Number) { 
when (num) {
is Int -> println("number is Int")
is Double -> println("number is Double")
else -> println("number not support")
}
}

除此之外还可以不传参,扩展其引用场景

1
2
3
4
5
6
7
8
fun getScore(name: String) = when { 
name.startsWith("Tom") -> 86
name == "Jim" -> 77
name == "Jack" -> 95
name == "Lily" -> 100
else -> 0
}


循环语句

while循环和主流的while循环一致
如何创建[0,10]的区间数组

1
val range = 0..10

如何创建[0,10)的区间

1
val range = 0 until 10

for-in循环

1
2
3
4
5
6
fun main() { 
for (i in 0..10) {
println(i)
}
}
//打印结果为0到10

使用step跳过

1
2
3
4
5
6
fun main() { 
for (i in 0 until 10 step 2) {
println(i)
}
}
//打印结果为0 2 4 6 8