运算符
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()