工欲善其事必先利其器,首先要先配置开发环境和选好开发工具,我在这里使用的是Android Studio2.3.3和 IntelliJ IDEA:https://www.jetbrains.com/idea/,附上我的IntelliJ IDEA版本
IntelliJ IDEA for MacAndroid Studio:2.x 版本需要安装 Kotlin 插件支持,3.0 开始默认支持编写 Kotlin 代码,无需插件(PS:添加插件的方式跟加GsonFormat一样的,就不再详解了)。
下面来看看语法:
1、变量类型:可空
kotlin的特性之一是类型安全。定义变量时需要定义该变量是否为空,一旦要求变量不能为空,那后续的空指针问题自然也不复存在。我们先来看kotiln里是如何定义变量的:
java:
String str ="test";
final String str2 ="test2";
String str3;
kotlin:
var str ="test"
val str2 ="test2"
var str3:String?=null
kotlin使用var关键字定义常量,用val关键字定义变量,如果在定义变量时直接赋值,则可以不用指定变量类型,否则需要在变量名后使用“:”来指定类型。在类型后加“?”表示该变量可空。如果变量可空,那在后续使用变量时,就必须先判断是否为空。
另外从代码中可以看出很重要的一点,那就是:从此再也不用写分号
var a:Int =null//错误,类型后没?,即不可空类型,自然不能等于null
var a:Int? =null//正确
val canNull: Int ? =0
canNull.toFloat//错误,可空变量调用时要判断空
canNull?.toFloat//正确,(如果是null,什么都不做)
canNull!!.Float//正确,(如果null,报空指针)
val canNotNull: Int =0
canNotNull.toFloat//正确
如果在定义变量时(例如定义成员变量),又想该变量不为空,又不想定义时就初始化时可以使用lateinit关键字
lateinit var test: String//正确
lateinit val test:String//错误
lateinit var test: Float//错误
关于lateinit关键字的使用限制:
lateinit modifier is allowed only on mutable properties
翻译:lateinit修饰符只允许在可变属性上
lateinit modifier is not allowed on primitive type properties
翻译:在原始类型属性上不允许使用lateinit修饰符
可见,lateinit修饰符只能修饰不可空类型,并且不允许修饰基础类型(四类八种基础类型int, double,boolean)。
四类八种基本类型2、常用语法:
switch:
java:
int test =1;
switch(test) {
case1:...break;
default:break;
}
kotlin:
when (test) {
1-> fragment = ShopFragment()
else-> {
}
}
这只是when最简单的用法,但kotlin里when的用处要比switch强大得多,when可以返回值,甚至可以在匹配条件里检测参数类型等,例如:
val result = when (x) { //返回值
0,1->"test"else->"else"}
when(view) { //检测参数类型,并且可见,在kotlin里,instanceof使用is代替
is TextView -> view.setText("I'm a TextView")
else-> view.visibility = View.GONE
}
var test =3
when(view) { //检测参数范围
in0..10-> {
...
}
else-> {
...
}
for循环:
java:
for(int i =0; i <5; i++) {
}
kotlin:
for(i in 0..4) {
}
for(item in listData) {//遍历列表,直接操作列表内的对象
item.method()
}
for(i in listData.indices) {//遍历列表带行index
}
for((i,item)in list.witnIndex()) {//加强版
}
listData.forEach { it.method() }//变种的for循环
更多语法详见教程 http://www.kotlincn.net/docs/tutorials/
另外,附上Kotlin资源大全 http://blog.csdn.net/cenzr/article/details/72674849
网友评论