学习Kotlin笔记

基于java,所以很多语法与java类似,从java切换到kotlin基本不需要成本。

编程语言:JVM, Android和Browser

在线尝试: https://try.kotlinlang.org

JB IDEA里的REPL 命令行交互

细节

1. val var 不需要具体的类型声明,如果使用代表可以强制类型转换; 区别 val = final

2. 没有NPE, https://en.wikipedia.org/wiki/Tony_Hoare Apologies and retractions

var a1 = null (wrong); var a2? = null (ok); a2.length (wrong); a2?.length (ok, return null)

3. if (a) {} else {}

4. when(mode) { 1-> aaa; 2 -> bbb; else -> ss} var a = when(mode) { express -> println("abc"); "Abc" } 执行并返回

5. val a = arrayListOf("abc") vs var/val a = listOf("abc")/arrayList() 区别

6. val a = arrrayListOf(); a.size; a[0], isEmpty(), contains(), subList(), add(), remove()

7. for loop:

for(i in 1..100) {//}

for(i in list) {}

for( (index, value) in list.withIndex()) {

println("Element at $index value $value");

}

for(c in "wiseking") { print(c)} //each char

outter@ for() {

if(st)

break@outter

}

for(i in list.size -1 downTo 0) {}

8. fun

fun getDate() : Date { return Date()}

fun getBirth() :Int {

return 2018 - age

}

等价于 fun getBirth() = 2018 - age

9. OO

class Person(name:String, age:Int = 10) {

var name : String

init() {

//construct

this.name = name

}

}

var a = Persion(age=10, name="wk") (OK)

var a = Persion("wk") (OK)

9.1. 继承 open override

9.2. 抽象类 abstract override

9.3. 接口 override

9.4. super this; super

9.5. data 类

9.6. dataBook赋值给多个变量, 两个属性相同的data对象等价

9.7. 单例 object Abc {}

9.8 枚举

10. package import 与java相同 a. 不需要static import; b. 可以直接引用java包

11. setter和getter field == this.age

12. 隐藏 可以使用 private protected internal

13. Stack实现的例子 DRY 可变长参数修饰 vararg

14. 泛型 stackOf, *elements

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181103G1JW9L00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券