(1)Kotlin语法简洁,同样功能,kotlin可能会比java减少50%的代码量;
(2)语法更加高级,使开发效率提升;
(3)kotlin在语言安全性上下了工夫,几乎杜绝了空指针这个全球崩溃率最高的异常;
(4)与Java100%兼容,使得Kotlin可以直接调用Java编写的代码,可以无缝使用Java三方库。
注:在线kotlin编程网址
https://try.kotlinlang.org
(1)val: 申明一个不可变的变量,这种变量在初始赋值后就不能重新赋值了,对应Java中的final变量;
(2)var: 申明一个可变的变量。
(3)Kotlin的推导机制与显示声明类型
推导机制:
fun main() {
val a = 10 //会自动推导a为Int型
println("a = " + a)
}
但如果先申明变量,后面再来赋值,则要进行显示声明类型,如:
val a: Int = 10
(4)Java与Kotlin基本类型对照表
如果你学过Java 并且足够细心的话,你可能发现了Kotlin中Int的首字母是大写的,而Java 中int的首字母是小写的。不要小看这一个字母大小写的差距,这表示Kotlin完全抛弃了Java 中的基本数据类型,全部使用了对象数据类型。在Java 中int是关键字,而在Kotlin中Int变成了一
个类,它拥有自己的方法和继承结构。

函数的申明如下:
fun largerNumber(num1: Int, num2: Int): Int {
return max(num1, num2)
}
另:
当一个函数中只有一行代码时,Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间用等号连接即可。比如我们刚才编写的largerNumber()函数就只有一行代码,于是可以将代码简化成如下形式:
fun largerNumber(num1: Int, num2: Int): Int = max(num1, num2)
由于max()函数返回的是一个Int值,而我们在largerNumber()函数的尾部又使用等号连接了max()函数,因此Kotlin可以推导出largerNumber()函数返回的必然也是一个Int值,这样就不用再显式地声明返回值类型了,代码可以进一步简化成如下形式:
fun largerNumber(num1: Int, num2: Int) = max(num1, num2)
Kotli n中的if语句和Java 中的if语句几乎没有任何区别,但kotlin中可以通过语法糖进行简化,如:
fun largerNumber(num1: Int, num2: Int): Int {
var value = 0
if (num1 > num2) {
value = num1
} else {
value = num2
}
return value
}
可以简化为:
val value = if (num1 > num2) {
num1
} else {
num2
}
return value
}
进一步简化:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) {
num1
} else {
num2
}
再进一步:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
Kotlin中的when语句有点类似于Java 中的switch语句,但它又远
比switch语句强大得多。
输入一个学生的姓名,返回该学生考试的分数, 如果用if语句写,如下:
fun getScore(name: String) = if (name == "Tom") {
86
} else if (name == "Jim") {
77
} else if (name == "Jack") {
95
} else if (name == "Lily") {
100
} else {
0
}
使用when写,更简单,如下:
fun getScore(name: String) = when (name) {
"Tom" -> 86
"Jim" -> 77
"Jack" -> 95
"Lily" -> 100
else -> 0
}
也可以写成无参数形式:
fun getScore(name: String) = when {
name.startsWith("Tom") -> 86
name == "Jim" -> 77
else -> 0
}
注意,Kotlin中判断字符串或对象是否相等可以直接使用==关键字,而不用像Java 那样调用equals()方法。
when的特点:
(1)when语句和if语句一样,也是可以有返回值的,因此我们仍然可以使用单行代码函数的语法糖;
(2)when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一系列的条件,格式是:
匹配值 -> { 执行逻辑 }
(3)除了精确匹配之外,when语句还允许进行类型匹配,如下:
fun checkNumber(num: Number) {
when (num) {
is Int -> println("number is Int")
is Double -> println("number is Double")
else -> println("number not support")
}
}
(1)while循环
其中while循环不管是在语法还是使用技巧上都和Java 中的while循环没有任何区别。
(2)for循环