基本语法
- 声明变量
val a:Int=1 // val 标识的变量不可变 相当于java中的final
var a:Int=0 // var 标识的变量为可变变量
var a:Int=null // 显示声明可空变量
//Kotlin 中没有标识变量,方法为静态的关键字
class A{
companion object{
//在这里声明的变量,方法相当于Java中的静态变量,方法
}
}
lateinit var o:Object //lateinit:修饰变量表示这个变量会在使用之前由用户主动赋值,使用时不再做非空判断,如果使用时未赋值,会抛出空异常。
- 类继承
class Base(Int a,Int b){}
class A(Int a,Int b) : Base(a,b){
//初始化代码块
Init{}
}
- 方法声明
/**
*定义一个方法,方法的参数可以有默认值,返回值类型为Int
*/
fun a(a:Int,b:Int,c:Int=0):Int{
return 0
}
//调用方法
a(0,0,1)
a(0,0) //参数c 使用默认值
a(a=0,b=0,c=1) //
与Java的不同点
- 没有三元操作符
Kotlin中if 可以是一个表达式,因此没有三元操作符
//java:
int a=b>c?b:c;
//kotlin:
val a=if (b>c) b else c
- 没有switch 关键字,相同功能可使用when代替
var a=3
when(a){
1->...
2->...
else->...
}
- Kotlin 中class 默认为final类,不能被继承,如果想拥有子类,需用 open 关键字修饰
方法
- lambdas
lambda表达式由{}包裹,-> 符号 前边是参数,后边是body,如果函数有返回值,最后一行为返回值。
如果lamdba只有一个参数,可省略参数和->符号,在body中 it 表示入参
如果参数有多个并且部分参数在body 中不会使用可用 _ 表示
// lambdas 使用示例
// fun1 使用方法作为参数
fun fun1(noMeaning(a:Int,b:Int)->Int){}
// 调用fun1 并使用lamdba作为参数
fun1({1,2->2})
//
fun1({_,_->3})
网友评论