手记|Kotlin 运算符和操作符回顾

362 阅读2分钟

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战

不瞒各位大佬,我想混个杯子,杯子被猫猫干碎了...

脑图镇楼:

image.png

周末过的很快,有没有这种感觉...

突然就周一了,

突然就周五了,

突然,

好像感觉丢了什么东西...

伸手去抓,却两手空空...

回顾身后,伊人已去...

image.png

一、Elvis 运算(if else 简化版

  • 空安全检查
  • 当前变量不为空则返回当前变量实际值,否则返回右侧 value
  • 语法: ?:

上事例:

// Elvis 运算符(if else 简化版
val str = "HLQ"
    // 传统 if else 写法
val resultStr = if(str.isEmpty()){
    "HLQ"
}else{
    "Struggle"
}
    // 新玩法
val resultStrKotlin = resultStr?:"Struggle"
println("resultStr $resultStr  resultStrKotlin $resultStrKotlin")

输出结果:

resultStr Struggle  resultStrKotlin Struggle

对应 Java 代码:

String str = "HLQ";
CharSequence var2 = (CharSequence)str;
boolean var3 = false;
// 看这里 三目运算符 但是 Kotlin 不支持
String resultStr = var2.length() == 0 ? "HLQ" : "Struggle";
String var5 = "resultStr " + resultStr + "  resultStrKotlin " + resultStr;
boolean var4 = false;
System.out.println(var5);

二、基础操作符

  • var numA = 4
操作JavaKotlinResult
+plus5
-minus3
*times8
/div1
%rem0
正整数+numunaryPlus4
负整数+numunaryMinus4
自增num++inc-4
自减num--dec5

这几个真没觉得有啥好的,反而不如 Java 直接搞起来让人觉得舒服,个人拙见...

三、复杂操作符

  • 区间测试案例: 0 - 6
运算符对应方法说明
..rangeTo闭区间运算符,比如从 0 到 6
until半开闭区间运算符,比如从 0 到 5
downTo反向区间运算符,比如从 6 到 0
step区间步长运算符
===a?.equals(b)?:(b===null)判断相等
!==!(a?.equals(b)?:(b===null))判断不等
inA 是否包含在 B
  • 区间步长运算符
for(num in 0..6 step 2){
    println("--->$num")
}

---> 0 2 4 6

四、位运算符

这块看来看去都是按位执行操作,给我整蒙圈了,先记录下来。

  • and:按位与。当两位同时为 1 时才返回 1
  • or:按位或。只要有一位位 1,即可返回 1
  • inv:按位非。单目运算符,将操作数的每个位(包括符号位)全部取反
  • xor:按位异或。当两位相同时返回 0,不同时返回 1
  • shl:左移运算符
  • shr:右移运算符
  • ushr:无符号右移运算符

THK

  • 疯狂 Kotlin 讲义