Kotlin 操作符学习

今天是2021年的第5天,终于有时间来写自己的博客了和学习新的知识点,希望自己在新的的一年有收获,我要给自己立个flag,每天今天发布一篇关于Kotlin 的知识,后期项目开发准备用它了,从Java混合,到全部Kotlin

Kotlin 操作符

在学习Kotlin之前最好有对比Java思想来学习,我也知识挑常用的操作符来记录

在Kotlin 中声明一个变量的时候,可以这样

//声明
var name:String=“”
name=null   //编译报错

如何使其编译通过,就要用到 ?操作符,直接声明到类型后面,在Kotlin 基本数据类型都是对象或者类,对于对象或者类来说,只有null和非null区别,?操作符主要是帮助我们来避开空指针的情况,也就是Kotlin吹牛逼说的,Kotlin能够避开大部分的NullPointerException
在这里插入图片描述

//声明
var name:String?=“”
name=null   //编译通过

?操作符用法

   //用法1,允许变量为null情况,直接声明在变量类型后面
        var  name:String?="小明"
        name=null
        name="小花"
        Log.i("name=",name.toString())
   //方法2,作用在方法,返回值上,允许为null情况发生
   //作用方法参数上,允许传为null情况发生
   funName(null);
   
   fun  funName(str1:String?):String?{
        return str1
    }
//错误用法,编译不用通过
  fun  funName(str1:String):String{
        return str1
    }

在实际开发中,我们经常需要对Object或者String,获取值或者操作,但是我们不知道对象是否为空,如果为空就会空指针,?操作符 ,作用对象,如果?左边非空,那么就返回name?.length,如果,为空那么,返回null

  //作用在String
        var  name:String?="namme"
        Log.i("name?.length=",name?.length.toString())

        //作用对象
        var  list:ArrayList<String>?=ArrayList<String>()
        Log.i("list?.size=",list?.size.toString())

?: 操作符
这个操作符主要作用于表达形式,表达式1?:表达式 2 ,如果表达式1非空,那么返回表达式1,如果表达式1为空,那么执行表达式2

 //如果age 为null,执行?:右边,如果age非null,那么返回age本身
        var  age:String?=null
        age=null
        var  leng=age?:-1

!! 操作符
如果b为空,那么就会报空指针异常,如果不为空就执行成功返回长度

val l = b!!.length

== 与 ===加粗样式
==判断值是否相等,===判断值及引用是否完全相等。

        val num: Int = 128;
        val a:Int? = num
        val b:Int? = num
        Log.i("a == b",(a == b).toString())//结果true
        Log.i("a === b",(a === b).toString())//结果false

…符号 以及 in
在Kotlin中如果要for循环,怎么实现呢,需要搭配…和 in 来实现,
…代表从x到y,包括x和y,这是一个闭区间运算符,
in代表在一个区间中

for (i in 1..10) { // 等价于 1 <= i && i <= 10
    println(i)
}

@符号
限定this的类型,限时OrderInvoiceActivity类型

 ActivityUtil.showToast(this@OrderInvoiceActivity, it + "")

::符号
得到类的Class对象

startActivity(Intent(this@MainActivity,MainActivity::class.java))

as?操作符
当使用 as 转型的时候,可能会经常出现 ClassCastException。 所以,现在可以使as?安全转型,当转型不成功的时候,它会返回 null。

注:在使用intent传值的时候,会出现空字符串不能用as强制转型,这是应该使用as?

val m: Int? = a as? Int
 var textView1:TextView=  findViewById<View>(R.id.textView1) as TextView;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值