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)
}