该系列文章仅作为学习记录,如有错误欢迎各位大佬指正 (* ^ ▽ ^ *)
如果与我一样初学,可以评论自己困惑,互相探讨,同时我也会将经典的问题更新到文章中,方便后来者学习。
类方面的简化
- data关键字的数据类
数据类,会根据主构造函数中的参数将equls(),toString()等方法自动生成。当一个类中没有代码时,可以省略尾部的大括号。
函数方面的简化
- 函数的参数默认值
在定义函数时候,给任意参数设定一个默认值,当调用此函数时就不会强制要求调用方为此参数传值,如果没有传值,就自动使用参数的默认值。 - 函数参数传递的顺序
Kotlin提供了键值对的方式来传递参数,从而不必像传统写法一样按照参数定义的顺序进行传参。
第1与第2点的示例
fun main() {
add1(123)
addST("word") //无法编译
addST(str = "word", ip = 127)
addST(str = "word") //使用默认的ip
}
fun add1(num: Int,str: String = "word") {
println(" num = $num , str = $str ")
}
// 默认赋值参数是最后一个,存在理想化,看下面函数
fun addST(ip : Int = 255, str: String) {
println(" IP = $ip ")
}
其他方面
-
对比Java,Kotlin最明显的特性就是不用再写 “;”
-
字符串内嵌表表达式 ${ 表达式 } 在运行时,使用表达式执行的结果代替该部分。
首先,如果写过java代码的就发现,我们需要拼接一些字符串来构成我们想要的结果。但kotlin中,也是很早就支持了字符串内嵌表达式的功能,还有其他的高级语言也支持这个功能。
小结:如果{}中只有一个参数,则可以省略{}
看下代码
val w = word!"
" hello, ${w} "
// 简化 ,如果{}中只有一个参数,则可以省略{}
" hello, $w "
在Kotlin中,虽然有次构造函数,但是缺很少使用,原因就是函数的参数默认值。
class Bird(val appearance : String ,name: String, age : Int) : Animal(name,age),AnimalSound{
constructor(name: String,age: Int): this("",name,age){
}
constructor() : this ("",0){
}
}
class Bird(val appearance : String = "" ,name: String = "", age : Int = 0) : Animal(name,age),AnimalSound{
}
(* ^ ▽ ^ *)