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

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

scala与java的==的比较的更多相关文章

  1. Scala For Java的一些参考

          变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...

  2. 使用Scala实现Java项目的单词计数:串行及Actor版本

    其实我想找一门“具有Python的简洁写法和融合Java平台的优势, 同时又足够有挑战性和灵活性”的编程语言. Scala 就是一个不错的选择. Scala 有很多语言特性, 建议先掌握基础常用的: ...

  3. scala调用java的方法,返回了一个对象链表List<Student>,在scala中遍历该链表获取指定Student的名字name

    假设Student类如下: class Student { private int no; private String name; public int getNo() { return no; } ...

  4. scala vs java 相同点和差异

    本贴是我摘抄自国外网站,用作备忘,也作为分享! Similarities between Scala and Java Following are some of the major similari ...

  5. Spark:用Scala和Java实现WordCount

    http://www.cnblogs.com/byrhuangqiang/p/4017725.html 为了在IDEA中编写scala,今天安装配置学习了IDEA集成开发环境.IDEA确实很优秀,学会 ...

  6. IDEA15使用maven编译scala和java

    机器安装maven,在IDEA中配置maven的home 创建项目:new-maven–> scala-archetype-simple project structure–>创建src. ...

  7. scala 与 java 之间的关系

    scala来源于java,但又高于java. scala的设计者Martin Odersky就是一个JAVA控,这位牛人设计了javac和编写了jdk中的通用代码.可以说java语言本身就是Marti ...

  8. 编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]

    编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本] 1. 开发环境 Jdk 1.7.0_72 Maven 3.2.1 Scala 2.10.6 Spark 1.6 ...

  9. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

  10. 用maven来创建scala和java项目代码环境(图文详解)(Intellij IDEA(Ultimate版本)、Intellij IDEA(Community版本)和Scala IDEA for Eclipse皆适用)(博主推荐)

    不多说,直接上干货! 为什么要写这篇博客? 首先,对于spark项目,强烈建议搭建,用Intellij IDEA(Ultimate版本),如果你还有另所爱好尝试Scala IDEA for Eclip ...

随机推荐

  1. 配置Windows为NTP服务器

    建议使用 ntpd for windows,这是一个ntp的windows版,操作和linux相似 下载:https://www.meinbergglobal.com/english/sw/ntp.h ...

  2. 折腾一天,终于配置好了,ssl证书,启用了https,用的阿里云ECS服务器

    阿里云ECS服务器配置了ssl证书, httpd-ssl.conf  的配置很重要,网站目录一定要设置正确. 阿里云的虚拟空间,弹性Web,目前好像还不支持ssl证书. 最后要网站强制https,下面 ...

  3. vim全局替换命令

    vim全局替换命令   语法为 :[addr]s/源字符串/目的字符串/[option]全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行.如:“1,20” ...

  4. activity 嵌套一级fragment,一级fragment嵌套二级fragment,在一级fragment中刷新二级fragment中的UI

    今天遇到挺纠结的问题,由于产品设计的问题,技术上涉及到activity 嵌套一级fragment,一级fragment嵌套二级fragment,在一级fragment中刷新二级fragment中的UI ...

  5. 设计模式 --迭代器模式(Iterator)

    能够游走于聚合内的每一个元素,同时还可以提供多种不同的遍历方式.   基本概念: 就是提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示.   使用迭代器模式的优点: 遍历集合或者数 ...

  6. loadrunner 计数器

    http://wenku.baidu.com/link?url=oN2kBiABHE1xJmbmZdOmlTCz0sJ8aL3i-hVGiBjAtw-epUW7qrk4f2mAqdOeK5xXw8Sk ...

  7. 第六十五,html嵌入元素

    html嵌入元素 学习要点:     1.嵌入元素总汇     2.嵌入元素解析     本章主要探讨HTML5中嵌入元素,嵌入元素主要功能是把外部的一些资源插入到HTML中.   一.嵌入元素总汇 ...

  8. java 邮件发送 apache commons-email

    package com.sun.mail;import org.apache.commons.mail.Email;import org.apache.commons.mail.EmailExcept ...

  9. ggplot2 theme相关设置—矩形设置(rect)

    在主题设置中,rect设置主要用于设置图例和面板 element_rect(fill = NULL, colour = NULL, size = NULL, linetype = NULL, colo ...

  10. Binary Trees

    1. Definiation What is Binary Trees? Collection of node (n>=0) and in which no node can have more ...