接上回判断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)