kotlin 语法基础

2019-05-17  本文已影响0人  kot_flu

语法解析

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
上一篇 下一篇

猜你喜欢

热点阅读