Kotlin基础5

本文介绍了在Kotlin中如何使用安全操作符处理null值,如?.和?:,以及如何使用异常处理、自定义异常和先决条件函数。还涵盖了字符串操作如substring、split、replace和比较,以及字符串遍历和数字类型的转换技巧。
摘要由CSDN通过智能技术生成

接上回判断null值

使用if判断null值情况:

我们也可以使用if判断,但是相比之下安全调用操作符用起来更灵活,代码也更简洁, 我们可以用安全操作符进行多个函数的链式调用。

//if/else判断null
    if(str != null){
        str = str.capitalize()
    }else{
        println("为null.")
    }

    //安全操作符
    str = str ?.capitalize () ?.plus ( " is great.")

空合并操作符:

?:操作符的意思是,如果左边的求值结果为null,就使用右边的结果值。

 //str=null输出jack不为null输出str
    println(str ?:"jack")

空合并操作符也可以和let函数一起使用来代替if/else语句

str = "jack"
    str = str?.let { it.capitalize() } ?: "butterfly"
    println(str)

异常(自定义异常、抛出异常、处理异常)

fun main() {
    var number :Int?=null
    try {
        checkOperation(number)
        number!!.plus(1)
    }catch (e:Exception){
        println(e)
    }
}


fun checkOperation(number: Int?){
    number ?: throw UnskilledException()
}

//自定义异常
class UnskilledException() : IllegalAccessException("操作不当")

先决条件函数:

使用这些内置函数,你可以抛出带自定义信息的异常。你必须满足先决条件,目标代码才能执行。

fun main() {
    var number :Int?=null
    try {
        checkOperation(number)
        number!!.plus(1)
    }catch (e:Exception){
        println(e)
    }
}


fun checkOperation(number: Int?){
//    number ?: throw UnskilledException()
    checkNotNull(number,{"something is not good."})
}

//自定义异常
class UnskilledException() : IllegalAccessException("操作不当")

substring:

字符串截取,substring函数支持IntRange类型(表示一个整数范围的类型)的参数,until创建的范围不包括上限值。

const val NAME = "Jack's friend"

fun main() {
    val index: Int = NAME.indexOf('\'')
//    val str : String = NAME.substring(0, index)
    var str: String = NAME.substring(0 until index)
    println(str)
}

split:

split函数返回的是List集合数据,List集合又支持解构语法特性。

const val NAMES = "jack,jack,json"

fun main() {
    val (orange, dest, proxy) = NAMES.split(",")
    println("$orange,$dest,$proxy")
}

replace:

字符串替换

 val str1="The prople's Republic of China."
    val str2 = str1.replace(Regex("[aeiou]")){
        when(it.value){
            "a" -> "8"
            "e" -> "6"
            "i" -> "9"
            "o" -> "1"
            "u" -> "3"
            else -> it.value
        }
    }
    println(str1)
    println(str2)

字符串比较:

在Kotlin中,用==检查两个字符串中的字符是否匹配,用===检查两个变量是否指向内存堆上同一对象,而在Java中==做引用比较,做结构比较时用equals方法。

forEach字符串遍历:

"The people's Republic of China.".forEach {
        print("$it*")
    }
T*h*e* *p*e*o*p*l*e*'*s* *R*e*p*u*b*l*i*c* *o*f* *C*h*i*n*a*.*

数字类型:

和Java一样,Kotlin中所有数字类型都是有符号的,也就是说既可以表示正数,也可以表示负数。

安全转换函数(.to***)

//    val numberl: Int = "8.98".toInt ()
    val numberl: Int? = "8.98".toIntOrNull()
    println(numberl)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值