Kotlin开荒小队——从Java到Kotlin

运算符

2017-12-28  本文已影响8人  doulala

is 运算符

is运算符用于判断对象是否属于某种类型。

  1. 使用上替代了java 里的instanceof运算符。

  2. 它会按照语义进行类型转换,不需要像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-> 用于进行数据枚举判断

  1. 使用上替代了java里的switch...default,如果愿意,可以替代if...else
  2. 该运算符会将它的参数与经过所有分支条件按顺序依次比较
  3. 每个分支条件可以是判断式或者枚举值(相当于==的判断式)
  4. 如无匹配则进入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化了。

  1. shl 表示有符号左位移(Shift Value Left),取代了<<, 即 1 << 2 表示为 1 shl 2

  2. shr表示有符号右位移 (Shift value Right),取代了>>。 即 4 >> 2 表示为 1 shr 2

  3. and 替代了&, 即 1 & 2 表示为 1 and 2

  4. or 替代了|, 即 1 | 2 表示为 1 or 2

  5. xor替代了^,表示异或,即 1 ^ 2 表示为 1 xor 2

  1. inv 替代了~,表示非, 即 ~2 表示为 2.inv()
上一篇 下一篇

猜你喜欢

热点阅读