mysql类似于equals_Scala对象比较==、eq、ne与java==、equals()

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

scala> 1 == 2

res24: Boolean = false

scala> 1 != 2

res25: Boolean = true

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

scala> List(1, 2, 3) == List(1, 2, 3)

res27: Boolean = true

scala> List(1, 2, 3) == List(4, 5, 6)

res28: Boolean = false

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

scala> 1 == 1.0

res29: Boolean = true

scala> List(1, 2, 3) == "hello"

res30: Boolean = false

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

scala> List(1, 2, 3) == null

res31: Boolean = false

scala> null == List(1, 2, 3)

res32: Boolean = false

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

822c8487f9f10d6a454e689cff8b1272.png

规则:首先检查左侧是否为null,如果不是,调用equals

方法。由于equals是一个方法,因此比较的精度取决于左手边的参数。又由于已经有一个

自动的null检查,因此你不需要手动再检查一次了。

这种类型的比较对于不同的对象也会产生 true,只要他们的内容是相同的并且它们的

equals 方法是基于内容编写的。例如,以下是恰好都有五个同样字母的两个字串的比较:

scala> ( "he" + "llo") == "hello"

res33: Boolean = true

Scala 的==与Java的有何差别

Java 里的既可以比较基本类型也可以比较引用类型。对于基本类型,Java 的==比较

值比较,如Scala。然而对于引用类型,Java 的==比较了引用的是否为同一个对象(比较内存地址),也就是说这两个变量是否都指向于JVM 堆里的同一个对象。Scala 也提供了这

种机制,名字是eq。不过,eq和它的反义词,ne,仅仅应用于 可以直接映射到Java的对

象。

示例:

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

参考自《Scala编程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值