一、kotlin发展历程
2011年,JetBrains发布了Kotlin的第一个版本,并在2012年将其开源。
2016年Kotlin发布了1.0正式版,代表着Kotlin语言已经足够成熟和稳定了,并且JetBrains也在自家的旗舰IDE开发工具IntelliJ IDEA中加入了Kotlin的支持。
2017年Google宣布Kotlin正式成为Android开发一级语言,并且Android Studio也加入了对Kotlin的支持。
2019年Google正式宣布了Kotlin First,未来提供的官方API也将会以Kotlin版本为主。
二、kotlin相比java的优势
语法更加简洁,对于同样的功能,使用Kotlin开发的代码量可能会比使用Java开发的减少50%甚至更多。
语法更加高级,相比于Java比较老旧的语法,Kotlin增加了很多现代高级语言的语法特性,使得开发效率大大提升。
语言更加安全,Kotlin几乎杜绝了空指针这个全球崩溃率最高的异常。
和Java是100%兼容的,Kotlin可以直接调用使用Java编写的代码,也可以无缝使用Java第三方的开源库。这使得Kotlin在加入了诸多新特性的同时,还继承了Java的全部财富。
三、运行kotlin代码
第一种方法是使用IntelliJ IDEA。
第二种方法是在线运行Kotlin代码。JetBrains专门提供了一个可以在线运行Kotlin代码的网站,地址是:https://try.kotlinlang.org。
第三种方法是使用Android Studio。在任意Android工程中创建一个Kotlin文件,并编写一个main()函数,即可运行main()函数中的Kotlin代码。
四、kotlin变量
Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。
val(value的简写的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。
var(variable的简写的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值复制,对应Java中的非final变量。
eg:
fun main() {
val a = 10
var b = 5
b = b + 3
println("a = " + a)
println("b = " + b)
}
Kotlin完全抛弃了Java中的基本数据类型,全部使用了对象数据类型。在Java中int是整型变量的关键字,而在Kotlin中Int变成了一个类,它拥有自己的方法和继承结构。
其他数据类型是将首字母大写就变成了kotlin的类!
五、kotlin函数
fun methodName(param1: Int, param2: Int): Int {
return 0
}
fun 函数名(参数1: 参数类型, 参数2: 参数类型): 返回值类型 {
return 0
}
如果没有参数或者返回值就可以不写!函数体只有一行是可以省去花括号{}!return可以省去,直接用=即可!Kotlin拥有出色的类型推导机制,可以自动推导出返回值的类型。
fun methodName(param1: Int, param2: Int) = 0
五、kotlin逻辑控制
if:
fun largerNumber(num1: Int, num2: Int): Int {
val value = if (num1 > num2) {
num1
} else {
num2
}
return value
}
//等价于
fun largerNumber(num1: Int, num2: Int): Int {
return if (num1 > num2) {
num1
} else {
num2
}
}
//等价于
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) {
num1
} else {
num2
}
//等价于
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
when:
//精确匹配
fun getScore(name: String) = when (name) {
"Tom" -> 86
"Jim" -> 77
"Jack" -> 95
"Lily" -> 100
else -> 0
}
//类型匹配
fun checkNumber(num: Number) {
when (num) {
is Int -> println("number is Int")
is Double -> println("number is Double")
else -> println("number not support")
}
}
for-in循环语句:
fun main() {
//[0,10]
for (i in 0..10) {
println(i)
}
//[0,10),每次执行循环都会在区间范围内递增2,相当于for-i循环中i = i + 2的效果。输出为0,2,4,6,8
for (i in 0 until 10 step 2) {
println(i)
}
//降序输出
for (i in 10 downTo 1) {
println(i)
}
}
跟着郭神学kotlin!