Kotlin之常用操作符

前言

熟悉Kotlin中常出现的一些操作符的用法,有助于我们快速入门Kotlin,下面将列举Kotlin中常用的一些操作符。

?操作符

?:操作符

!!操作符

==与===

::操作符

@符合

as?操作符

:操作符

"""操作符

is类型判断符

实例分析

?操作符

?操作符表示这个对象可能为空

//在变量类型后面加上问号,代表该变量是可空变量

var name: String? = "zhangsan"

/**

*如果str不能转为Int类型,则返回null

*/

fun parseInt(str: String): Int?

{

// (代码略)

}

//如果 b非空,就返回 b.length ,否则返回 null,这个表达式的类型是 Int?

b?.length

?:操作符

如果 ?: 左侧表达式非空,elvis操作符就返回其左侧表达式,否则返回右侧表达式。请注意,当且仅当左侧为空时,才会对右侧表达式求值。

//类型后面加?表示可为空

var age: String? = null

//age为空返回-1

val ages2 = age?.toInt() ?: -1

!!操作符

如果!!左侧非空返回该值,否则抛出NPE(空指针)异常

//类型后面加?表示可为空

var age: String? = "23"

//抛出空指针异常

val ages = age!!.toInt()

==与===

==判断值是否相等,===判断值及引用是否完全相等。

val num: Int = 128;

val a:Int? = num

val b:Int? = num

println(a == b)

print(a === b)

输出结果:

true

false

::操作符

::表示当前

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

@符合

限定this的类型

class User

{

inner class State

{

fun getUser(): User

{

//返回User

return this@User

}

fun getState(): State

{

//返回State

return this@State

}

}

}

as?操作符

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

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

val m: Int? = a as? Int

:操作符

用于类的继承,变量的定义

类型和超类型之间的冒号前要有一个空格

实例和类型之间的冒号前不要空格

//定义全局变量时 var str: String? = null //类的继承与变量定义 class TestActivity(str: String) : Activity{}

"""操作符

三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留。

val str = """

one

two

"""

is类型判断符

检查某个实例是否是某个类型,如果判断出属于某个类型,那么判断后的分支中可以直接可当该类型使用,无需显示转换

fun getStringLength(obj: Any): Int?

{

//obj在&&右边自动动转换成"String"类型

if (obj is String && obj.length > 0)

return obj.length

return null

}

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 29,669评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,143评论 0 33
  • 接着上节 mutex,本节主要介绍atomic的内容,练习代码地址。本文参考http://www.cplusplu...
    jorion阅读 59,930评论 1 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 128,834评论 18 137
  • 当才华不足以支持野心,当实力不足以支撑梦想时,你唯一能做的就是努力奋斗。否则,同样的行为,对别人而言是率真,对你而...
    螺絲釘飛飛阅读 84评论 0 0
  • 最喜欢的时刻之一就是早上迷迷糊糊的时候跟饲养员同志说我饿了,他就会慢悠悠的起来给我做早饭吃。看着眼睛都没睁开的他在...
    葛优躺的Ruby阅读 88评论 0 0
  • 常用的排序算法的时间复杂度与空间复杂度 1、时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出...
    好怕怕阅读 1,603评论 0 1