Kotlin使用简要笔记

Kotlin使用简要笔记

基础语法

定义变量

可变类型 变量名:数据类型

可变类型分为var、val两种,分别代表可变、不可变;

var id: Int = 5 
var name: String = "jack"
val useVal: Int = 1000

Kotlin是支持类型推导,在定义变量时可以不显式声明类型,而通过赋值来确定变量类型。

val b = 2   // `Int` 类型是自推导的
val c: Int  // 没有初始化器时要指定类型
c = 3       // 推导型赋值

空值检测

Kotlin有两种类型:一个是非空引用类型,一个是可空引用类型,例如,String为不可空类型,String?为可空类型
对于可空引用,如果希望调用它的成员变量或者成员函数,直接调用会出现编译错误,有三种方法可以调用:
1. 在调用前,需要先检查,因为可能为null
2. 使用b?.length的形式调用,如果b为null,返回null,否则返回b.length
3. 使用b!!.length()的形式调用,如果b为null,抛出空指针异常,否则返回b.length

//当data不为空的时候,执行语句块
data?.let{
    //... 
}

//相反的,以下代码当data为空时才会执行
data?:let{
    //...
}

定义函数

访问控制符 fun 方法名(参数,参数,参数) : 返回值类型{
    ...
    ...
}
  • Kotlin的访问范围从大到小分别是public、internal、protected、private,不声明默认是public;
  • 不需要返回类型的函数,后面的 : 返回值类型可以缺省
/有返回参数的函数
fun getName(): String {
    return "jack"
}
//无返回参数的函数
fun displayName(name: String) {
    println("name: $name")
}

参数变长

传递的参数使用关键字vararg标明

fun displayName(vararg name: String) {
    println("name: " + name);
}

静态变量和函数

使用companion object,companion object后可以加上自定义的object名,也可以省略

class KotlinStatic {
    companion object Test {
        var kotlinInt: Int = 0
        fun getInstance(): KotlinStatic {
            return KotlinStatic()
        }
    }
}

其他地方使用
    KotlinStatic.kotlinInt
    KotlinStatic.getInstance()

If表达式

If判断是有返回值的,在把If当成表达式使用时必须有else分支,这样在逻辑上才能保证最终一定有返回值,否则会报语法错误

    var result = if (a > b) {
        println("a > b")
        true //返回结果
    } else {
        println("a <= b")
        false
    }
    println("result: $result")

    if (a > b) {
       return a
    } else {
       return b
    }

When表达式

相当于Java中的switch

    var result = when (input) {
        //判断input是否为1
        1 -> println("input == 1")
        //判断input是否为2
        2 -> {
            println("input == 2")
        }
        //input是否在10到20的范围内
        in 10..20 -> println("input number in the range")
        //input是否不在20到30的范围内
        !in 20..30 -> println("input number outside the range")
        else -> { //When作为表达式使用时,最后一定要以else
            println("input: $input")
        }
    }
    println("result: $result")

在android studio中使用

环境搭建

使用android studio 3.0,创建工程时勾选include Kotlin support

控件调用

xml文件里的textView加一个id,Activity中直接使用

import kotlinx.android.synthetic.main.activity_main.*

tv_hello.text = "123"

函数扩展

语法是 fun + 类型.函数(参数)

fun Context.toast(message:String,length : Int = Toast.LENGTH_SHORT){
Toast.makeText(this,message,length)
}

代码可以写在其他可以编译到的文件中,值的注意的是,如果写在了class内部,则是局部生效。第二个参数,可以给默认值,如果参数不传,则自动调用默认值。

加入监听器

 btn_test.setOnClickListener{toast("hello world", Toast.LENGTH_SHORT)}

数据类

data class User(var name: String, var id: String)

或者

var name: String? = null
var id: String? = null

constructor(name: String) {
this.name = name
}

constructor(name: String, id: String) {
this.name = name
this.id = id
}
}

使用

val user = User("jack","222")
user.id = "100"

参考文章

Kotlin-in-Chinese
Kotlin学习笔记(二):变量与函数
让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean

猜你喜欢

转载自blog.csdn.net/yaodong379/article/details/74782633