1. 环境配置
基本的配置步骤很容易在网上找到,就不详细说明了。
推荐配置:打开模块下的build.gradle文件,在apply plugin: 'kotlin-android'下面加入一行:apply plugin: 'kotlin-android-extensions'。这是一个Kotlin的扩展模块,可以让Activity自动关联xml布局中的View而不需要findViewById。
2. 将java文件转化为kotlin文件的方法
- 在AS下通过快捷键Ctrl+Shift+A打开FindAction,输入Convert Java File to Kotlin File 可以将项目中的java文件转换为kotlin文件。
- 在菜单栏中点击“Code”菜单项,选择“Convert Java File to Kotlin File”即可根据之前配置将已有的Java文件转换为Kotlin文件。
3. kotlin的基本用法
1.语句的结尾不用分号
2.定义
- 定义变量和常量:在Kotlin中常量用val声明,变量用var声明,关键字在前面,类型以冒号:隔开在后面,也可以省略直接赋值,类型后带问号?表示可为空类型(默认空安全)。
private var str: String? = null
private var str1: String? = "hello world"
private var str2 = "hello world"
private val arrs = Array(3) { Array(2) { IntArray(1) } }
- 定义方法: 在Kotlin中方法用fun声明,参数名在前,类型以冒号:隔开在后面。参数后冒号隔开的是返回值的类型。返回值为空可以省略。函数体可以是表达式,并可从中推断出返回值类型。函数参数可以设置默认值,当参数被忽略时会使用默认值。这样相比其他语言可以减少重载。
fun sum(a: Int = 0, b: Int = 1): Int {
return a+b
}
fun sum1(a: Int, b: Int) = a + b
fun sum2(a: Int, b: Int){
println(a+b)
}
- 定义类:在Kotlin中属性自动生成Java的getter/setter方法,方便在Java中调用,更方便赋值。括号内的参数代表构造方法的参数。
class User(name: String) {
var name: String? = null
var age: String? = null
}
//赋值
user.name = "zjj"
user.age = "21"
//取值
val name = user.name
val age = user.age
3. 使用 this@lable 作为 lable
为了在范围外部(一个类,或者表达式函数,或者带标签的扩展字面函数)访问 this ,我们需要在
class User {
inner class State{
fun getUser(): User{
//返回User
return this@User
}
fun getState(): State{
//返回State
return this@State
}
}
}
4. 字符串模板
在Java中拼接字符串的代码可读性都很差,在Kotlin字符串拼接变得非常简洁,只需用$后面加上参数名,复杂的参数要加上{}
var userInfo = "name:${user.name}, age:$age"
5. Ranges(范围)
for (i in 4 downTo 1) print(i) // prints "4321"
for (i in 1..4 step 2) print(i) // prints "13"
for (i in (1..4).reversed()) print(i) // prints "4321"
6. 条件
if...else 正常使用,不过移除了switch用更强大的when替代,when子式可以是常量、变量、返回数值的表达式、返回Boolean值的表达式,强大到用来替换if...else if
var x = 10
when (x) {
//常量
2 -> println("等于2")
//数值表达式
if (x > 0) 1 else -1 -> println("大于0并等于1,或小于0并等于-1")
//Boolean类型表达式
in 1..5 -> println("范围匹配1-5")
!in 6..9 -> println("不是6-9")
is Int -> println("类型判断")
else -> println("else")
}
// 代替if...else if
when{
x > 6 && x <= 10 -> println("大于6小于等于10")
x < 6 -> println("小于6")
else -> println("else")
}
7. 循环
while 和 do...while 同Java并无区别,for则有很大改变并多出了几个变种
val list = ArrayList<String>()
//递增for (int i = 0; i < list.size(); i++)
for (i in list.indices) {
print(list[i])
}
//递增for (int i = 2; i < list.size(); i++)
for (i in 2..list.size-1) {
print(list[i])
}
//递减for (int i = list.size(); i >= 0; i--)
for (i in list.size downTo 0) {
print(list[i])
}
//操作列表内的对象
for (item in list) {
print(item)
}
8. 返回和跳转
在 Kotlin 中表达式可以添加标签,标签通过 @ 结尾来表示。
现在我们可以用标签实现 break 或者 continue 的快速跳转:
loop@ for (i in 1..100) {
for (j in i..100) {
if (...)
break@loop
}
}
break 是跳转标签后面的表达式,continue 是跳转到循环的下一次迭代。