第三节 二元元组、空值处理

1、二元元组


fun main(args: Array<String>) {

   //定义一个二元元组,包含姓名和年龄
    val pair=Pair<String,Int>("张三",20)
    println(pair.first)
    println(pair.second)

    //另外一种更简单的定义方式
    val pair2="李四" to 30
    println(pair2.first)
    println(pair2.second)

}

输出:


image.png

2、三元元组


fun main(args: Array<String>) {

   //定义一个三元元组,包含姓名和年龄、电话
    val triple=Triple<String,Int,String>("张三",10,"13290877666")
    println(triple.first)
    println(triple.second)
    println(triple.third)

}
image.png

3、空值处理


image.png

fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null
    
    //val str: String? 可空类型 可以赋值为null
    val str:String?=null
}

将str转换为Int类型


image.png

关闭非空检查(不建议使用)


fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null

    //val str: String? 可空类型 可以赋值为null
    val str:String?=null
    //将str转为为Int类型(报错)
    //str.toInt()
    //告知编译器,不需要做非空检查了(这样的话因为str为null,运行抛异常了)
    str!!.toInt()
}

输出:


image.png

空安全调用符(推荐)


fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null

    //val str: String? 可空类型 可以赋值为null
    val str:String?=null

    //空安全调用符
    str?.toInt()
}

运行并没有报错,看下转换后的java代码:


image.png

可以看到,并有调用toInt()方法,把str赋值后再看下java代码


fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null

    //val str: String? 可空类型 可以赋值为null
    val str:String?="123"

    //空安全调用符
    str?.toInt()
}

转换后的java代码:


image.png

空安全调用的返回值:Int?


image.png

fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null

    //val str: String? 可空类型 可以赋值为null
    val str:String?="123"

    //空安全调用的返回值是可空类型
    var a:Int?=str?.toInt()
    if(a==null)
    {
        println(-1)
    }
    else
    {
        println(a)
    }
}

输出:


image.png

fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null

    //val str: String? 可空类型 可以赋值为null
    val str:String?=null

    //空安全调用的返回值是可空类型
    var a:Int?=str?.toInt()
    if(a==null)
    {
        println(-1)
    }
    else
    {
        println(a)
    }
}

输出:


image.png

简单写法:


fun main(args: Array<String>) {

    //val str:String 非空类型 不能赋值为null

    //val str: String? 可空类型 可以赋值为null
    val str:String?=null

    //空安全调用的返回值是可空类型
    var a:Int=str?.toInt()?:-1
    println(a)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容