Kotlin学习笔记:基础内容
更少的代码量:
Kotlin相比于Java的特点之一在于减少了输入,为此它有以下几个特点:
-
分号是可选的。一般来说除非你要在一行里写多个表达式,不然你不需要写分号
-
更聪明的类型推断。Kotlin的另一大特色就是其类型推断。通过val或者var关键字,
我们在声明变量时不再需要一定在后面跟上变量名称了。比如:val greet = 10
编译器将帮助我们自动推断greet的类型
-
类和函数是可选的。与Java不同,Kotlin不要求语句或者表达式属于一个方法,也不要求方法一定要属于一个类。(其底层实际上会自动将其包装成一个类,但是我们不需要自己做这件事)
-
try-catch是可选的。在Kotlin中,不会强迫你捕获异常,如果未放置try-catch且函数崩溃了,异常将会自动地传到代码的调用方。
定义变量
Kotlin中定义变量是采取 可变类型 参数名:参数类型的格式的。
由于有更加智能的类型推导,Kotlin可能并不会在你定义变量时强制你显式地写出变量类型,但是你必须指定该变量是可变变量还是不可变变量。
val 和 var
val 和 var 是kotlin相比Java不同的点。 如果要定义一个不可变的变量(实际上是引用不可变)使用val,否则使用var。
比如:
val pi = 3.14
或者
val pi:Double = 3.14
这里有一个经典的原则:我们优先使用不可变(val)变量,如果在后续代码中你发现需要改变该变量的值再改成可变(var)的。因为这可以避免变量被意外地修改。
改进的相等性检查
有两种相等性的检查,分别对应引用是否相同和结构(内容)是否相同
- == 双等号 :用于判断内容是否相同,类似equals方法但是它可以安全地处理空引用
- === 三等号: 用于判断引用是否相同,直接等价于Java中的==
字符串模板
Kotlin中的新的内容,以往我们如果想要创建带有表达式内嵌值的字符串需要用+,比如
"Welcome " + name + " !" ;
而现在,我们可以用字符串模板实现。在双引号字符串中,$符号可以作为任何变量的前缀来将其转化为表达式。如果表达式比简单变量更复杂,则需要使用${}表达式包裹。
对于上面这个例子,我们就可以:
val na = "Nick"
println("Welcome, ${na} !")
原生字符串
以三个引号开始
原生字符串就是没有转义的字符串,但是它会保留缩进。
比如说如果没有原生字符串:
val s = "The kid asked, \"How's it going, $name?\""
如果是原生字符串:
val s = “”" The kid asked,“How’s it going, $name?”“”"
就消除了原本的字符串的转义。
但是需要注意的是原生字符串会保留缩进,在大段输入的情况下可能会出现格式的错乱,这种时候需要用到trimMargin方法修正。
try-catch 表达式
Kotlin把try-catch也视为一个表达式。若无异常,try部分的最后一个表达式将作为表达式的值;若出现异常,catch部分的最后一个表达式则将作为表达式的值。(与finally无关)