Android studio3.0以上
android studio新建kotlin项目的时候,会自动将gradle关于kotlin的环境配置好,不过在kotlin官方网站也有gradle配置的教程。
官方pdf下载:
Kotlin怎么学
mapped types:掌握java数据类型对应kotlin中的哪些数据类型 (page151)
变量的定义不同
var 变量名: 变量类型
val a: Int = 1 // immediate assignmentval b = 2 // `Int` type is inferredval c: Int // Type required when no initializer is providedc = 3 // deferred assignment
var代表变量,val代表常量。
3.定义List和Map,相当简单 (page23)
4.类和对象 (page 41)
1)实例化对象不需要new 关键字
5.方法复写需要override关键字
Kotlin哪些地方让人很爽
基本数据类型自带 (page 29)
toType,转各种类型。
plus,连接方法
还可以给数据类型定义指定的方法
fun String.spaceToCamelCase() { ... }"Convert this to camelcase".spaceToCamelCase()
2.在引号里就可以直接操作变量(有点像php的语法)
fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}")}
控制台打印:System.out: sum of 3 and 5 is 8
想想一下在java里打印上面的一句话,得要多少个引号,多么的蛋痛!
3.语法简洁
1)
fun maxOf(a: Int, b: Int) = if (a > b) a else b
java的话得多{}和return以及;
2)当不为null执行一段代码
val data = ...data?.let {... // execute this block if not null}
3.with 执行一个对象的多个方法
4.java 7 读写文件 (但是要求API 26)
val stream = Files.newInputStream(Paths.get("/some/file.txt"))stream.buffered().reader().use { reader ->println(reader.readText())
4.变量+?控制变量是否可以为null
5.Loop (page:20)
6.when分支判断很强大
7.in range判断(page:21)
for (i in 1..100) { ... } // closed range: includes 100for (i in 1 until 100) { ... } // half-open range: does not include 100for (x in 2..10 step 2) { ... }for (x in 10 downTo 1) { ... }if (x in 1..10) { ... }
8.集合链式写法(有点RxJava的感觉)
val items = listOf("apple", "banana", "kiwi","agelababy")items.filter { it.startsWith("a") } .sortedBy { it } .map { it.toUpperCase() } .forEach { println(it) }
9.优雅的嵌套循环break,再也不用自己写什么标记控制了。
(i ..) { (j ..) { (j > ) (i > ) (ij) }}
Kotlin哪些地方让人头痛
访问作用域/类修饰词/继承