一.为什么使用kotlin?
- 简洁: 大大减少样板代码的数量。
- 安全: 避免空指针异常等整个类的错误。
- 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
- 工具友好: 可用任何 Java IDE 或者使用命令行构建
二.kotlin基本语法
1.程序入口(Kotlin 应用程序的入口点是main
函数。)
fun main(){
println("hello world")
}
2.函数构造
例: fun sum(a:Int,b:Int):Int{
return a+b
}
等同于
fun sum(a:Int,b:Int) = a+b
a,b函数带参
:Int表示返回Int类型的数据
3.kotlin变量
1.val:只读局部变量使用关键字,只能赋值一次
2.var:重新赋值的变量
4.字符串模板($赋值,replace替换)
val a = 1
val s = "a is $a"
val s1="${s.replace("is","was")}"
5.条件表达式
1)if语句
例: fun maxOf(a:Int,b:Int):Int{
if(a>b){
return a
}else{
return b
}
}
等同于
fun maxOf(a:Int,b:Int) = if(a>b) a else b
2)when语句(取代java中的switch操作符)
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
6.null与空值检测
当某个变量的值可以为null的时候,必须在声明处的类型后添加?
来标识该引用可为空。
7.类型检测与类型自动转换
is运算符检测一个表达式是否某类型的一个实例。如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换
例:
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj` 在该条件分支内自动转换成 `String`
return obj.length
}
// 在离开类型检测分支后,`obj` 仍然是 `Any` 类型
return null
}
8.循环语句
1)for语句
//直接依次获取list集合中的对象
for(listItem in list){
println(listItem)
}
//依次根据list的下标获取对象
for(index in list.indices){
println("$index no item is ${list[index]}")
}
2)while语句
var index = 0
while(index < list.size()){
println("$index no item is ${list[index]}")
index++
}
9.in运算符来检测一个值是否在某个区间
例: a in 1..20 表示a所在的是否在1-20之内(包含1与20)