Kotiln简单用法和java的不同之处
首先我们需要先创建一个Kotlin的项目
首先我们先了解一下为啥要用kotlin好处有哪些?
首先了解一下kotlin的有点
- 更少的空指针异常
- 更少的代码量
- 更快的开发速度
- 更一致的开发体验
使用java要用大量的findViewById 而且每行代码都需要加一个没用的分号,还有switch语句需要加break;
再也不用findViewById
做过Android开发的人都知道,布局文件写的多了,findViewById也是一个很大的工作量,而且还要先声明变量,在findViewById然后再强转成我们的控件,使用方式一般如下
TextView username;
username=(TextView)findViewById(R.id.user)
username.setText("我是一个TextView");
如果使用Kotlin。我们可以直接这样写
user.text="我是一个TextView"
user就是我们布局文件声明的id,.text就想当与setText()给,在Kotlin语言中,我们看不到了像Java中的set/get方法了。
拼接字符串
java中 "Hello,"+str 而在kotlin 中 "Hello,$str" 少的时候看不出来效果但是如果很多字符串拼接的时候就可以体现出来kotlin的优势了,这里就不做示范了
使用点击事件
kotlin使用点击事件
user.onClick {
toast(" ${user.text}")
}
全局的点击事件和java的区别就是没有implements关键字表示实现接口。直接在类后面加上 View.OnClickListener实现方法就可以了
/**
* 这种方法与java的区别是没有implements关键字表示实现接口。
when就相当于java中的switch。
“:”符号改为了“->”。
*/
override fun onClick(v: View?) {
when (v?.id) {
R.id.tv -> toast(" 我是kotlin")
R.id.TextView -> toast(" 我是kotlin2")
}
}
这就是点击事件 比java少了很多没用的代码 switch也变得更加简洁好看了
Kotlin中var和val的区别
Kotlin中有两个关键字定义变量,这两个关键字外形看着差别很小就只差了一个字母,但实际差别很大的。
var str = ""
var str3: String? = null
var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和java中声明变量的方式一样。var 定义变量不能为 null 只能用字符串
val是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变。
Kotlin -- open, final, abstract 修饰符
在Kotlin中,所有的类默认都是final
的。如果你需要允许它可以被继承,那么你需要使用open
声明:
//这个类具有`open`属性,可以被其他类继承
open class People: Speakable{
//`open`的方法被实现和覆写,该方法也是`open`的
override fun say() {}
//`final`属性的方法,不可被覆写
fun sayHello() {}
//`open`属性的方法,可以被继承和覆写
open fun sayName() {}
}
当然,你也可以阻止某些方法被覆写:
open class People: Speakable{
//`final`修饰一个原本具有`open`属性的方法,使其变得不可再被覆写
final override fun say() {}
}
在kotlin中,abstract
的用法几乎和Java一致,值得一提的是,当你使用abstract
修饰符的时候,可以忽略open
修饰符,因为被abstract
修饰的类默认具有open
属性。
上述表格仅适用于基类,对于接口类来说,你基本用不上fianl
、open
、abstract
,因为接口类默认是open
,且不能被声明为final
,如果接口类的方法没有函数体,那么其为abstract
,但是不需要你明确指出他是abstract
的。
Kotlin 对for循环做了简便
这个是java中的for循环
for (int i = 0; i >=4; i++){
Log.d("onItemSelected: ", i.toString())
下面是kotlin中的for循环 这个很简便一行就可以解决 而且在for循环也用..代替了
for (i in 0..4) Log.d("onItemSelected: ", i.toString())
kotlin可以节省很多代码,值得学习学习