Kotlin之操作符

? 可空类型

申明属性testStr可以为空

val testStr : String? = null

?. 安全调用

实现 当testStr不为空时,输出其长度

//传统学法
val length = {
    if (testStr != null) testStr.length
}
println("传统写法length=$length")

//?.写法
val length2 = testStr?.length
println("?.写法length=$length2")

!! 非空断言

//断言字符串一定不为空
testStr!!.length

如果字符串真的为null,那么程序会报空指针异常

Exception in thread "main" java.lang.NullPointerException
	at com.example.mykotlin2.evils.KotlinKt.main(kotlin.kt:18)
	at com.example.mykotlin2.evils.KotlinKt.main(kotlin.kt)

?: 空合并

如果字符真的为null,就输出 ?: 后面的信息

 //?:写法
val info = testStr ?: "当前字符串未null"
println("?:写法info=$info")

//?. ?:经常联合使用
val length3 = testStr?.length?:-1
println("联合使用length=$length3")

as 类型转换

open class Person(var name:String,var age:Int)

class Student(name: String, age: Int):Person(name,age)

val person = Person("kotlin", 85)
val student = Student("java", 100)

val asPerson = student as Person
println("as类型转换:$asPerson")
val asStudent = person as Student
println("as类型转换:$asStudent")

as类型转换,如果是无法转换,报错类型转换异常

as类型转换:com.example.mykotlin2.evils.Student@3f99bd52
Exception in thread "main" java.lang.ClassCastException: com.example.mykotlin2.evils.Person cannot be cast to com.example.mykotlin2.evils.Student
	at com.example.mykotlin2.evils.KotlinKt.main(kotlin.kt:38)
	at com.example.mykotlin2.evils.KotlinKt.main(kotlin.kt)

as? 安全类型转换

val asPerson2 = student as? Person
println("as类型转换:$asPerson2")
val asStudent2 = person as? Student
println("as类型转换:$asStudent2")

as? 类型转换,如果是无法转换,会返回null,所以是安全的类型转换

as类型转换:com.example.mykotlin2.evils.Student@3f99bd52
as类型转换:null

: 继承或者实现

继承类

open class Person(var name:String,var age:Int)
class Student(name: String, age: Int):Person(name,age)

实现接口 Runnable

class Man:Runnable{
    override fun run() {
    }
}

:: 函数调用

表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法

fun add(x: Int, y: Int): String = (x + y).toString()

fun showInfo(x: Int,y: Int,info: (x1: Int, y1: Int) -> String): String {
    return info(x,y)
}

调用

showInfo(1,2,::add)

listOf(1, 2, 3).forEach(::println)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值