运算符
2017-12-28 本文已影响8人
doulala
is 运算符
is运算符用于判断对象是否属于某种类型。
-
使用上替代了java 里的
instanceof运算符。 -
它会按照语义进行类型转换,不需要像java一样还需要进行显示转换。
fun foo1(obj:Any) : Unit{
if(obj is String){
System.out.println("obj is a String parameter, call toIntOrNull() can convert it to Int, value is ${obj.toIntOrNull()}")
}else{
System. out.println("obj is not a String")
}
}
when表达式
when...else-> 用于进行数据枚举判断
- 使用上替代了java里的
switch...default,如果愿意,可以替代if...else - 该运算符会将它的参数与经过所有分支条件
按顺序依次比较 - 每个分支条件可以是
判断式或者枚举值(相当于==的判断式) - 如无匹配则进入
else->代码块
//ps:kotlin的编写是不需要分号的,加上不影响运行,但是会获得一个小波浪
fun foo2(x: Any): Unit {
when (x) {
is Int -> {
when (x) {
1 -> System.out.println("value = $x") //枚举值。
in 2..5 -> System.out.println("value = $x <= 5") //判断式
else -> {
System.out.println("value = $x > 5")
}
}
}
is String-> {
System.out.println("$x is String")
}
else->{
System.out.println("input a invalid type ")
}
}
}
消失的“位”运算符
java中的位运算符完全被function化了。
-
shl表示有符号左位移(Shift Value Left),取代了<<, 即1 << 2表示为1 shl 2 -
shr表示有符号右位移 (Shift value Right),取代了>>。 即4 >> 2表示为1 shr 2 -
and替代了&, 即1 & 2表示为1 and 2 -
or替代了|, 即1 | 2表示为1 or 2 -
xor替代了^,表示异或,即1 ^ 2表示为1 xor 2
-
inv替代了~,表示非, 即~2表示为2.inv()