一.处理Kotlin代码的方式
1.Kotlin Playgroud 在对应网站trykotlinlang.org上在线试用,不用Andriod框架依赖性
2.Andriod Studio |File|Setting|Plugins|Install JetBrains plugin..|Kotlin下载在2.x版本下,3.x则不用,在Tools|Kotlin|Configuration Kotlin in Project
选择Andriod with Gradle 然后再选择所需模块和Kotlin版本,3.0之后可在创建项目时选中Include Kotlin support
3.使用Java-Kotlin转换器J2K
二.Kotlin语言基础知识
1.Kotlin 定义两种数据类型: var:可变引用,可在初始化后更新
val:只读引用,初始化之后无法赋值
val变量相当与final修饰的Java变量,防止被错误修改,多线程工作时,可以不必担心数据同步操作,@val无法改变指向特定对象实例的引用,但可以修改对象的属性
var list = mutableListOf("a","b","c")//ok
list = mutableListOf("d")//error
list.remove(3)//ok
2.类型推断
var title :String
当变量声明和初始化一起执行,可忽略类型声明
var title:String="Kotlin"
类型推断会导致title = 12报错
Kotlin有类型体系结构,全部显性继承Any类型,相当与Java的对象,有equals、toString、hashCode
在Android Studio中可以用Shift+Ctrl+P快捷键知道类型,类型推荐机制同样可以用于泛型
var persons = listOf(personInstancel1,personInstancel2)
//equal to List<Person>
var pair = "Everest" to 8848
//equal to Pair<String,Int>
var pair = Pair("Ever",8848)
//use constructor
二元参数判断取基本类型String和Int最近的Any类型
必要时可以显性定义数据类型var age: Long = 18
省内存可以用Short
3.严格的空保护机制
在Java中的NullPointerExceptions,大多数不是运行期错误,所以Kotlin加入默认情况下不能设置为空值和存储空引用,除非显性定义
//在变量类型声明加?
val age:Int = null//error
val name:String? =null//ok
//但是潜在空对象无法调用其方法
name.toUpperCase()//error
//需要在调用前加判断
3.Kotlin安全调用 val locked: Bollean? = savedInstanceState?.getBoolean("locked")
4.elvis操作符 first operand?:second operand 如果第一个操作数不为null返回否则第二个
5.let 可空变量处理方式
savedInstanceState?.let{
//ok
}
//当不为空执行let之后的代码