• Kotlin 学习(1)


    本文出自链接:https://www.jianshu.com/p/ef9584a8ebf8

    Kotlin的插件安装:

    Settings->Plugins->Browse Repositories->搜索Kotlin

    Kotlin语法:

    1、定义函数:

    与Java定义函数的区别在于:Kotlin在定义函数的时候要加fun关键字,函数的返回值前后不同,java的在前面,如

        private int getResult(int a, int b) {
            return a + b;
        }
    

      Kotlin的返回值在后面:

        private getResult(a: Int, b: Int): Int {
            return a + b
        }
    

     如果一个函数只有一个表达式函数体并且是返回类型自动推断的话,可以直接这样写 

        fun getResult(a: Int, b: Int) = a + b 
        // 这里的函数没有写返回值,以为Kotlin会自动判断返回值类型

    如果函数返回一个无意义的值,相当于Java的void,则可以这样写

        fun getResult(a: Int, b: Int) {
            print(a + b)
        }

    2、定义局部变量

    Kotlin声明变量与Java声明变量有些不一样,Java变量类型在前,变量名在后,而Kotlin则相反,变量名在前,变量类型在后,中间加:(冒号),并且Kotlin可以自动判断变量的类型。

    声明局部常量(常量使用val关键字)

    val a: Int = 1
    val b = 1   // 自动判断出Int类型
    val c: Int  // 当没有初始化值的时候要声明类型,全局变量不能这样写
    c = 1       // 赋值

    声明变量(变量使用var关键字)

    var x = 5 // 自动推断出Int类型
    x += 1 

    3、注释和java一样,当行注释和块注释  // 和/** **/

    4、使用字符串模板

    使用${变量},如变量为args: Array<String>,使用的时候可以这样写

    fun main(args: Array<String>) {
        if (args.size == 0) return
    
        print("First argument: ${args[0]}")
    }

    而不用再去用加号加起来,gradle里面也是支持的

    fun main(args: Array<String>) {
        if (args.size == 0) return
    
        print("First argument: " + args[0])
    }
    View Code

    5、使用可空变量和空置检查(Using nullable values and checking for null)

    当一个变量、函数可能出现空值的时候,应该指出该引用可空,如

    fun getResult(a: Int, b: Int): Int? { // 设置函数返回类型可空
            print(a + b)
            return null
        }

    6、使用类型检查和自动转换(Using type checks and automatic casts)

    is运算符是检查一个表达式是否是某个类型的实例,如果为不可变局部变量或属性进行类型检查,则无需显式转换

    fun getStringLength(obj: Any): Int? {
        if (obj is String) {
            // `obj`在这个分支中自动转换为`String`类型
            return obj.length
        }
    
        // `obj`仍然是`Any`类型
        return null
    }

    7、使用for循环

    fun main(args: Array<String>) {
        for (arg in args) { // in操作符可以判断是否arg是否在args里面
            print(arg)
        } 
    }

    或者

    for (i in args.indices) {
        print(args[i])
    } 

    8、使用when表达式

    when表达式就相当于Java的switch表达式,省去了casebreak,并且支持各种类型。

    fun cases(obj: Any) {
        when (obj) {
            1          -> print("One") //如果obj的值为1
            "Hello"    -> print("Greeting") // 如果obj的值为hello
            is Long    -> print("Long") // 如果obj的类型是Long类型
            !is String -> print("Not a string") // 如果obj的类型不属于String类型
            else       -> print("Unknown") // 默认,相当于switch的default
        }
    }

    9、使用ranges

    使用in运算符检查数字是否在范围内,使用!in运算符检查数值是否在范围外

    if (x in 1..y-1) { //1..y-1表示1到y-1的范围
        print("OK")
    }
    for (i in 1..100) { ... }  //  1到100范围
    for (i in 1 until 100) { ... } // 半开范围,不包括100,相当于[1,100)
    for (x in 2..10 step 2) { ... } // 每次夸2,内容为2,4,6,8,10
    for (x in 10 downTo 1) { ... } // 返序
    if (x in 1..10) { ... }

    10、使用集合

    循环输出一个集合里面的值或者判断集合里面是否包含某个变量

    for (name in names) { // 将会调用nemes.contains(name)方法
        println(name)
    }

    使用lambda表达式过滤和映射集合

    // it表示name
    names
            .filter { it.startsWith("A") }
            .sortedBy { it }
            .map { it.toUpperCase() }
            .forEach { print(it) }
  • 相关阅读:
    linux初始化宏__init, __exit
    linux内核initcall
    常用命令合集
    df
    ln
    cat
    grep
    find
    IE11浏览器传时间格式不兼容,c.a.d.c.advice.AdcDaBaseExceptionAdvice : JSON parse error
    js 图片不保存的回显功能/图片尺寸验证/图片大小验证 /图片类型验证
  • 原文地址:https://www.cnblogs.com/chhom/p/8328077.html
Copyright © 2020-2023  润新知