zoukankan      html  css  js  c++  java
  • scala与java的==的比较

    如果你想比较一下看看两个对象是否相等,可以使用或者==,或它的反义 !=。(对所有对象都适用,而不仅仅是基本数据类型)

    1
    2
    3
    4
    scala> 1 ==  2
    res24: Boolean = false
    scala> 1 !=  2
    res25: Boolean = true

    这些操作对所有对象都起作用,而不仅仅是基本类型。例如,你可以用他比较列表:

    1
    2
    3
    4
    scala> List(1, 2, 3) == List(1, 2, 3)
    res27: Boolean = true
    scala> List(1, 2, 3) == List(4, 5, 6)
    res28: Boolean = false

    进一步,你还可以比较不同类型的两个对象:

    1
    2
    3
    4
    scala> 1 ==  1.0 
    res29: Boolean = true
    scala> List(1, 2, 3) == "hello"
    res30: Boolean = false

    你甚至可以比较null,或任何可能是null 的东西。不会有任何异常被抛出: 

    1
    2
    3
    4
    scala> List(1, 2, 3) == null
    res31: Boolean = false
    scala> null ==  List(1, 2, 3)
    res32: Boolean = false

    (但比较:null == null)时就报错了)

    1
    2
    3
    规则:首先检查左侧是否为null,如果不是,调用equals
    方法。由于equals是一个方法,因此比较的精度取决于左手边的参数。又由于已经有一个
    自动的null检查,因此你不需要手动再检查一次了。

    这种类型的比较对于不同的对象也会产生 true,只要他们的内容是相同的并且它们的
    equals 方法是基于内容编写的。例如,以下是恰好都有五个同样字母的两个字串的比较: 

    1
    2
    scala> ( "he" + "llo") == "hello"
    res33: Boolean = true

    Scala 的==与Java的有何差别

    Java 里的既可以比较基本类型也可以比较引用类型。对于基本类型,Java 的==比较
    值比较,如Scala。然而对于引用类型,Java 的==比较了引用的是否为同一个对象(比较内存地址),也就是说这两个变量是否都指向于JVM 堆里的同一个对象。Scala 也提供了这
    种机制,名字是 eq。不过,eq和它的反义词,ne,仅仅应用于 可以直接映射到Java的对
    象。


    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    object BitOpt {
      class A{}
     def main(args:Array[String]){
       val a = new A
       val b = new A
        println(a==b)
        println(a eq b)
        println(a ne b)
        println(!a.eq(b))
     }
    }
     
    结果:
    false
    false
    true
    true
  • 相关阅读:
    CentOS 出错处理
    g13 root
    修复误删系统文件
    c++ list sort方法
    批量修改outlook联系人头像,并同步手机
    IT大牛们 学术搜索
    oracle 表空间操作
    CentOS 5.5 安装MPICH2\MRNet\Launchmon时遇到的问题
    自我反省
    积累航程
  • 原文地址:https://www.cnblogs.com/langren1992/p/5022517.html
Copyright © 2011-2022 走看看