美文网首页
Kotlin基础语法

Kotlin基础语法

作者: 小庄bb | 来源:发表于2018-03-23 10:16 被阅读23次

    包的定义

    package com.doctorq
    import java.util.*
    

    注意这里的包定义和java有一点不同,它和文件所在的路径没有关系,但是编译过后,却会按照原来的包名来生成路径

    函数定义

    带返回值的函数

    //定义方法
    fun sum(a:Int, b:Int): CharSequence? {
        return (a + b).toString()
    }
    

    函数关键字为fun, 参数名和类型要倒叙,返回值用:后面跟类型.这个很Scala而且调用函数,没有对象概念,直接调用了.

    表达式函数

    //定义表达式
    fun sum1(a: Int, b: Int) = (a + b).toString()
    

    无返回值函数

    //定义没有返回值的表达式
    fun showMsg() : Unit {
        Log.d("hello", "----------------------Kotlin-----------------------")
    }
    

    也可缺省

    fun showMsg() {
        Log.d("hello", "----------------------Kotlin-----------------------")
    }
    

    本地变量

    常量,关键字val

    val a: Int = 1
    val b = 1
    

    变量关键字var

    var c : Int
        c = 3
    

    注意常量不能赋值,也就是说

    val c 
    c = 1
    

    这种表示方式会报错

    注释

    可以使用双斜杠注释一行语句,或者/**/的格式注释语句块

    /*
    val c
    c = 1
    上面的这种定义方式是错误的
     */
    

    格式化字符串

    在字符串格式中输出字符串,以$+变量名的形式就可以直接读取字符串的值,

    fun showMsg1() {
        val name:String = "hello"
        Log.d("$name", "----------------------Kotlin-----------------------")
    }
    

    字符串中调用函数

    fun getMsg() :String{
        return "hello"
    }
    
    fun showMsg2() {
        Log.d("${getMsg()}", "----------------------Kotlin-----------------------")
    }
    

    条件判断语句

    if语句

    fun showMsg3(msg: String) {
        Log.d(msg, "----------------------Kotlin-----------------------")
    
    }
    
    //正常语句
    fun maxOf(a: Int, b: Int) {
        if (a > b)
            return showMsg3(a.toString())
        else{
            return showMsg3(b.toString())
        }
    }
    //条件表达式
    fun maxOf1(a: Int,b: Int) = if ( a > b ) showMsg3(a.toString()) else showMsg3(b.toString())
    

    空值安全检查

    对于有可能返回空值的函数,必须标注出来,在返回值类型后面跟?表示,比如一个函数的返回值为Int值,如果返回值可能为空,那么要写成Int?

    fun sum(a: Int, b: Int): CharSequence? {
                return (a + b).toString()
    }
    

    类型检查

    使用关键字is来检测表达式类型,如果是常量或属性,如果进行了类型检查,类型检查分支的自动转变为该对象.如果判断的时候用!is,则if语句外的obj自动转化为该对象,更加强大的是如果在&&判断左边有判断,右边也能直接转化为该对象

    fun getStringLength(obj:Any):Int? {
        if (obj !is String){
            return null
        }
    
        return obj.length
    }
    

    循环语句

    fun showMsgs(){
        var list = listOf<String>("doctorq", "dev", "text")
        for(item in list){
            showMsg3(item)
        }
    }
    

    如果要获取索引值的话使用

    fun showMsgs1(){
        var list = listOf<String>("doctorq", "dev", "text")
        for(index in list.indices){
            showMsg3("$index : ${list[index]}")
        }
    }
    

    while语句

    fun showMsgs2(){
        var list = listOf<String>("doctorq", "dev", "text")
        var index = 0
        while (index < list.size){
            showMsg3("item at $index is ${list[index]}")
            index++
        }
    }
    

    when语句,类似于java语句中的switch,case,不过条件更加灵活

    //类似java中的switch,scala中的case
    fun describe(obj: Any): String =
            when (obj) {
                1 -> "one"
                "Hello" -> "Greeting"
                is Long -> "Long"
                !is String -> "Not a string"
                else -> "UnKnown"
            }
    

    范围定义

    获得一个区间的值,可以使用in关键字,创建一个区间数组可以使用..来创建,比如要创建一个1到10的数组,可以使用1..10来创建

    fun demo(){
        val x = 10
        val y = 9
        if (x in 1..y+1) {
            showMsg3("fits in range")
        }
    }
    
    //集合
    fun demo3(){
        var list = listOf<String>("doctorq", "dev", "text")
        for (item in list){
            showMsg3(item)
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Kotlin基础语法

          本文链接:https://www.haomeiwen.com/subject/kwwaqftx.html