语法解析
class Test { // 声明类 Test,默认public final
var str1: String? = null // 声明一个可为空、初始值为 null 的 String 类型属性
var str2: String = null!! // 声明一个没有空安全、初始值为 null 的 String 类型属性
lateinit var str3: String // 声明一个延迟初始化、不能为空的 String 类型属性
var str4: String = "str" // 声明一个不能为空、初始值为 null 的 String 类型属性
var str5 = "str" // 声明一个不能为空、初始值为 “str” 的 String 类型属性
val int1: Int = 1 // 声明一个不能为空、初始值为 1 的 Int 类型属性
fun main1(str: String) : Unit {} // 声明一个参数为 String 类型、无返回值的方法
fun main2(str: String) {} // 声明一个参数为 String 类型、无返回值的方法
fun main3(str: String) : String { // 声明一个参数为 String 类型、返回类型为 String
return str
}
}
Kotlin 中同样使用关键字 class 声明类,但是变量及方法的声明大有不同。
使用关键字 var 声明可变变量,相当于 Java 中的普通变量,使用关键字 val 声明不可变变量,相当于 Java 中 final 修饰的常量。声明变量时,关键字后紧接着的是变量名,冒号后面是变量类型。
使用关键字 fun 声明方法(据说取自于 Kotlin 编程有很多乐趣!),括号内参数声明和变量一致,变量名在前,类型在后。在方法声明的最后加上冒号后面才是返回类型,无返回值时为 Unit 类型,可省略。
Kotlin 是空安全的语言。
空安全
什么是空安全?从上面的变量声明中可以看出来,Kotlin 中的类型默认情况下是不允许为空的
var str: String = null // 错误的声明
如果你这样声明一个变量,编译器就会告诉你 str 是不为空的类型,不能赋值为 null,所以,你需要在类型后面加上 ? 来标识这个变量可以为空才能赋值为 null。
var str: String? = null // 正确的声明
而 Kotlin 中的 !! 则被称为非空断言,可以放在任何变量后,将其转换成非空类型,即你告诉编译器这个 变量觉不可能为空,如果为空了,你也做好了抛出异常的准备。非空断言修饰的变量为 null 时,会抛出空指针异常。
安全调用运算符: ?.
var str: String?
str?.toString() -----> if(null != str) str.toString()
Elvis 运算符: ?:
var str: String
str?: "" -----> if(null == str) return "" else return str
网友评论