当前位置: 首页>后端>正文

Kotlin学习笔记4 可控性特点

可控性

//1:第一种情况,默认不能随意给空值
Var name:String=“zhangsan”
Name =null//会报异常
Var name2:String?=“zhangsan”`
name2=null
name2=“json”//可为空,name2用问号(?)修饰

//2:第二种 安全调用

var  name :String=“json”
name=null
//可为空的name,使用可能为空的name,需要给出补救措施
name?.capitalize()//如果为空,问号后面不执行,不会引发空指针异常

使用let安全调用

var  name :String?=null
name?let{//如果let为空,let方法提不执行,不会引发空指针
//如果执行到这里,it肯定不会null
  if(it.isBank()){//如果那么是空值“”没有内容
  “default”
    }else{
  it
  }
}

:非空断言操作符

var  name :String?=null
name!!.capitalize()// 不管问号是不是null,后面都执行,如果为空容易引发空指针

if判断null的情况(和java一样)

var  name :String?=null
if(name!=null){
//执行
}else{
//name  is  null 
}

kotlin 空合并操作符

var  name :String?=“李小龙”
name=null
//如果name是空 执行?:后面的条件
Toast(name?:”这是一个null”)
//let+空合并
Toast(name?let{”${it}”)?:”这是一个null")

kotlin异常处理 和自定义异常

try{
var   name:String?=null
checkException(name)
}catch(e:Exception){
println(e)
}

fun. checkException(name:String?){
Name?: throw myException()
}

class  myException :IllegaArgumentException(“我自己的异常”)
//官方异常
checkNull(name)
requireNotNull(name)


kotlin中。subString使用

cons  val INFO =“json,  is,   me”
INFO.subString(0,3)
//split分割操作
val list=INFO.split(“,”)
//解构. c++语言语法
val(v1,v2,v3)=list
println(“v1${v1}v2${v2}v3${v3}”)
//也可以直接输出list
println(${list})

replace 加密解码操作

val  pas=“ASSDDSDFDFDGHGHJHJH”
println("原始密码是${pas}”)
//加密操作,把字符替换为数字,就是加密了,正则AH如果是AH就会加密
pas.repalce(Regex(“[AH]")){
//直接写it.value. 就是真么也没处理
  when(it.value){//每一个字符,加密处理,只是根据条件 替换字符
        “A”->”9”
       “H”->”5”
        else-> it.value
  }
}
//解密操作
pas.repalce(Regex(“[95]")){
//直接写it.value. 就是真么也没处理
  when(it.value){//每一个字符,加密处理,只是根据条件 替换字符
        “9”->”A”
       “5”->”H”
        else-> it.value
  }
}

kotlin == 和 ===

//==值比较 相当于java的equals
// ===引用比较
val  name =“aaaabbb”
val  name2 =“aaaabbb”
name==name2和 name.quals(name2)。等同
name ===name    也是true

字符串遍历

val str=“ABCDEFG”
str.firEach{
println(it)
}

安全转换函数

val number=“666”.toInt()//没问题
val number=“666.6”.toInt()//会报错,字符串是double不能转int
//安全转换,错了返回空
Val number:Int?=“65.6”.toIntOrNull()
//double 转int
666.3434343.toInt()
==666 //四舍五入
666.53333.roundToInt()
==667

val r=“%3f”.format(65.345)//保留三位小数

apply内置函数

val info =“json is dog”
//普通函数
println(“长度是${info.length}”)
println(“最后一个字符${info[info.length-1]}”)
println(“转小写${info.toLowerCase()}")
//apply内置函数
Info.apply{
//一般匿名函数都会持有it,但是apply函数不会持有it,却会持有this,this=info本身
println(“长度是${length}”)
println(“最后一个字符${[length-1]}”)
println(“转小写${oLowerCase()}")
}
//链式
info.apply{
//字符串处理逻辑1
}.apply{
//字符串处理逻辑2
}.apply{
//字符串处理逻辑3
}

https://www.xamrdz.com/backend/3va1942663.html

相关文章: