取消findViewById
在app 中加入applyplugin:'kotlin-android-extensions'
然后再Activity中 直接根据ID 使用界面元素:
tvKotlin.text="name"
一些常用的语法
1,没有“;” 代码行不需要用 冒号结尾,什么不写就好。
2,“:”的作用和java中(for/switch/三元运算符)不同,在Kotilin里,“:” 作用非常大,包括:
定义变量类型
var name:String="name"//变量name为String类型
定义参数类型(无返回值)
fun getName(id:Int){
}
定义函数的返回值
fun getName(id:Int):String{
//返回值为String类型
}
声明类或接口的继承或实现
class KotlinActivity:
AnkoComponent<KotlinActivity>{//继承AnkoComponent接口
使用Java类
val intent =Intent(this,MainActivity::class.java)
//需要::来使用java类
3,没有了new 关键字
Kotlin实例化一个对象时,不需要new
var list=ArrayList()
4,常量 变量符
用var定义变量
var name:String="Name"
用val定义常量 (final)
val name:String="Name"
当然 Kotlin是支持类型推断的,也就是说 数据类型 咱不用写如:
var Name="Name"
val Name="Day"
5,必须初始化
在java中,我们可以定义一个变量, 如int和boolean 会默认是 0或 false
而在Kotlin中必须给变量赋值,如果只写一个变量 却不赋值如:
var name
编译器就会报错,提示未初始化,你必须赋值为0或者null,或者别的值。
6,空指针安全
在Kotlin里,可以用?号表示可以为空,也可以用!!表示不能为空。
空指针安全并不是不需要处理空指针,你需要用"?"声明某个变量允许为空指针,如:
var num:Int?=null
声明允许为空的时候,不能使用类型推断,必须声明其数据类型!!!
空指针虽然安全了,但对空指针的处理还是要视情况而定,有时候不处理,有时候做数据检查,有时候还需要抛出异常,这三种情况可以这么写:
val v1=num?.toInt()//不做处理返回null
val v2=num?.toInt()?:0 //判断为空时返回0
val v3=num!!.toInt()//抛出空指针异常(!!表示不能为空)
7,定义函数
在Kotlin语法里,定义函数的格式是这样的:
fun 方法名(参数名:类型,参数名:类型....):返回类型{
}
如:
fun getName(id:Int,name:String):String{
return "yes"
}
犹豫Kotlin 可以对函数的返回值进行类型推断,所以经常用"="代替返回类型的return关键字,上面这段代码可以写成:
fun getName(id:Int,name:String)={
"yes"
}
如果函数只有一行,那么我们可以去掉{}
fun getName(id:Int,name:String)="yes"
函数也允许空指针安全,在返回值后面增加"?"即可
fun getName(id:Int,name:String):String?="yes"
无返回值时,可以这么写
fun getName(id:Int,name:String):Unit{
//(Unit相当于java的void)
}
或
fun getName(id:Int,name:String){
//什么都不写
}
8,用is取代了instance of
if(a is String)...
9,in 、区间和集合
1..5表示 1-5的整数区间 可以用in(在。。。里面)判断数字是否在某个区间
if(x in 1..5){//检查X 数值是否在1到5区间}
可以用in 判断集合中是否存在某个元素
if(name in list){
// 检查list中是否有某个元素
}
可以用in 遍历整个集合
for(i in 1..5){
//遍历1-5
}
for(item int list){
//遍历list中每个元素 相当于(for(String item:list))
}
in 在便利集合时功能很强大:
在遍历集合时,可以从第N项开始遍历:
for(i in 3..list.size-2){
//相当于 for(int i=3;i<=list.size()-2;i++)
}
可以倒序遍历
for(i in list.size downTo 0){
//相当于for(int i=list.size;i>=0;i--)
}
可以 反转列表
for(i in (1..5).reversed())
10,用when取代switch
switch 在java 里一直不怎么给力 在老版本 不支持String
Kotlin 干脆用强大的when 取代了switch:
fun when(obj:any){
when(obj){
1->"is Int"
in 2..5->"在2和5之间"
else->"as default" //用else 代替switch的default
}
}
网友评论