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
  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/langren1992/p/5022517.html
Copyright © 2011-2022 走看看