文档章节

基本类型和操作之对象相等性

柳哥
 柳哥
发布于 2014/06/06 12:16
字数 523
阅读 78
收藏 1

如果想要比较一下看看两个对象是否相等,可以使用==,或它的反义 != 。如例:


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

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

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

如上所示,==已经被仔细地加工过,因此在多数情况下都可以实现合适的相等性比较。这种比较遵循一种非常简单的规则:首先检查左侧是否为null,如果不是,调用左侧操作数的equals方法。而精确的比较取决于左操作数的equals方法定义。由于有了自动的null检查,因此不需要手动再检查一次了。注意,看下面这个例子:

好像变量确定了类型之后,再比较null的相等性,才不会报警告!!

这种比较即使发生在不同的对象之间也会产生true只要比较的两者内容相同并且equals方法是基于内容编写的。例如,以下是恰好都有五个相同字母的两个字符串的比较:


Scala的==与Java的有何差别
Java里==既可以比较原始类型也可以比较引用类型。对于原始类型,java的==比较值的相等性与scala一致。而对于引用类型,Java的==比较了引用的相等性,也就是说比较的是这两个变量是否都指向JVM堆里的同一个对象。Scala也提供了这种机制,名字是:eq 。不过,eq 和它的反义词 ne,仅仅应用于可以直接映射到Java的对象,这个我们后面在讲解。可以看下示例:

object T4 {
    class A{}
    def main(args: Array[String]): Unit = {
        val a = new A
        val b = new A
        println(a == b)    //false
        println(a eq b)    //false
        println(a ne b)    //true
        println(a.eq(b))   //false
    }
}


© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 205
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
面试官爱问的equals与hashCode

equals和hashCode都是Object对象中的非final方法,它们设计的目的就是被用来覆盖(override)的,所以在程序设计中还是经常需要处理这两个方法的。而掌握这两个方法的覆盖准则以及它们的区别还...

2017/12/27
0
0
理解 equals(),hashcode()和 ==

这里分别讲==和equals()的关系,以及equals()和hashcode()的关系 讲解之前,需要先明白对象的内容、对象的引用,基本类型,引用类型这几个概念,此处不做解释 一、==和equals() 两者都是比较...

Bour
08/04
0
0
equals与”==”的区别

equals()和“==”操作用于对象的比较,检查俩对象的相等性,但是他们俩的主要区别在于前者是方法后者是操作符。由于java不支持操作符重载(overloading),“==”的行为对于每个对象来说与equ...

YoungBoyG
2016/03/23
17
0
equals与”==”的区别

equals()和“==”操作用于对象的比较,检查俩对象的相等性,但是他们俩的主要区别在于前者是方法后者是操作符。由于java不支持操作符重载(overloading),“==”的行为对于每个对象来说与equ...

LCZ777
2014/03/30
0
0
scala语言与java的区别

scala支持关联映射,如可以用(key -> value)表示一个键值对 scala中的所有类型都是对象,包括基本数据类型 scala中的case语句用来判断接收的消息,比java中的switch...case...更专注 receiv...

jhonephone
2014/09/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
24分钟前
3
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0
PHP生成图片验证码

PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

DrChenXX
昨天
1
0
纹理与表面细节添加方法---OpenGL纹理函数

OpenGL线纹理函数 OpenGL表面纹理函数 OpenGL体纹理函数 OpenGL纹理图案的颜色选项 OpenGL纹理映射选项 OpenGL纹理环绕 复制帧缓存中的OpenGL纹理图案 OpenGL纹理坐标数组 OpenGL纹理图案命名...

中国龙-扬科
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部