Kotlin使用简要笔记

来源:互联网 发布:interface php 编辑:程序博客网 时间:2024/06/05 19:34

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? = nullvar id: String? = nullconstructor(name: String) {this.name = name}constructor(name: String, id: String) {this.name = namethis.id = id}}

使用

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

参考文章

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