这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战
- 手记 | MobPush 接入总结
- Gradle 手记|盘点我使用过的 build 基本配置(不断更新中。。。
- Git 手记 | 总结个人日常开发常用到的一些命令(不断更新。。。
- Utils 手记 | Android Studio 插件整理(不断更新中...
- 手记|Kotlin 基础类型回顾
- 手记|Android 获取已配对蓝牙列表和已连接蓝牙名称
- 手记|Kotlin 运算符和操作符回顾
不瞒各位大佬,我想混个杯子,杯子被猫猫干碎了...
序
脑图镇楼:
周末过的很快,有没有这种感觉...
突然就周一了,
突然就周五了,
突然,
好像感觉丢了什么东西...
伸手去抓,却两手空空...
回顾身后,伊人已去...
一、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
| 操作 | Java | Kotlin | Result |
|---|---|---|---|
| 加 | + | plus | 5 |
| 减 | - | minus | 3 |
| 乘 | * | times | 8 |
| 除 | / | div | 1 |
| 除 | % | rem | 0 |
| 正整数 | +num | unaryPlus | 4 |
| 负整数 | +num | unaryMinus | 4 |
| 自增 | num++ | inc | -4 |
| 自减 | num-- | dec | 5 |
这几个真没觉得有啥好的,反而不如 Java 直接搞起来让人觉得舒服,个人拙见...
三、复杂操作符
- 区间测试案例: 0 - 6
| 运算符 | 对应方法 | 说明 |
|---|---|---|
| .. | rangeTo | 闭区间运算符,比如从 0 到 6 |
| until | 半开闭区间运算符,比如从 0 到 5 | |
| downTo | 反向区间运算符,比如从 6 到 0 | |
| step | 区间步长运算符 | |
| === | a?.equals(b)?:(b===null) | 判断相等 |
| !== | !(a?.equals(b)?:(b===null)) | 判断不等 |
| in | A 是否包含在 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 讲义