您好!欢迎来到北极熊网

北极熊网

热门搜索: 任正非传    神雕侠侣    红楼梦   

Java中使用==和equals的区别是什么

  • 技术文档
  • 来源:北极熊
  • 编辑:佚名
  • 时间:2022-12-31 17:06
  • 阅读:114

1、== 解析

== 常用于相同的基本数据类型之间的比较,也可用于相同类型的对象之间的比较;

  • 如果 == 比较的是基本数据类型,那么比较的是两个基本数据类型的值是否相等;

  • 如果 == 是比较的两个对象,那么比较的是两个对象的引用,那么就是比较两个对象的引用是否相等,也就是判断两个对象是否指向了同一块内存区域;

2、equals 方法解析

equals 方法主要用于两个对象之间,检测一个对象是否等于另一个对象。

我们来看一看 Object 类中的 equals 方法的源码

 Java

public boolean equals(Object obj) { 
     return (this == obj); 
 }

它的作用也是判断两个对象是否相等,一般有两种使用情况:

情况一:对象的 equals 方法没有被重写,那么 equals 被调用时比较的是两个对象的引用是否相等,也就是两个对象是否指向了同一片内存区域。此时,其等价于 == 比较两个对象。

Dog类

 Java

package com.xiao; 
 /** 
 * @author :小肖 
 * @date :Created in 2022/3/11 14:42 
 */ public class Dog { 
 
    private String name; 
 
    private Integer age; 
 
 
    public Dog() { 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public Integer getAge() { 
        return age; 
    } 
 
    public void setAge(Integer age) { 
        this.age = age; 
    } 
 
    public Dog(String name, Integer age) { 
        this.name = name; 
        this.age = age; 
    } }

测试类

 Java

import com.xiao.Dog; 
 public class Test { 
 
    public static void main(String[] args) { 
        Dog dog = new Dog("小旺",2); 
        Dog dog1 = new Dog("小旺",2); 
        System.out.println(dog.equals(dog1)); 
    } }

测试结果

false

情况二:对象的 equals 方法被重写了。一般,我们进行重写后的 equals 方法比较的是两个对象的内容是否相等。如果相等的话,那么返回 true ,否则返回 false

Dog类

 Java

package com.xiao; 
 /** 
 * @author :小肖 
 * @date :Created in 2022/3/11 14:42 
 */ public class Dog { 
 
    private String name; 
 
    private Integer age; 
 
 
    public Dog() { 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public Integer getAge() { 
        return age; 
    } 
 
    public void setAge(Integer age) { 
        this.age = age; 
    } 
 
    public Dog(String name, Integer age) { 
        this.name = name; 
        this.age = age; 
    } 
 
 
    @Override 
    public boolean equals(Object obj) { 
        if(obj.getClass() != getClass()){ 
            return false; 
        } 
        Dog dog = (Dog) obj; 
        if(dog.getAge() == age && dog.getName().equals(name)){ 
            return true; 
        } 
        return false; 
    } }

测试结果

测试类代码和上面的一样

true

3、equals方法具有以下特性

  • 自反性:对于任意不为 null 的引用值 x ,x.equals(x) 一定是 true。

  • 对称性:对于任意不为 null 的引用值 x 和 y ,当且仅当 x.equals(y) 是 true 时,y.equals(x) 也是 true 。

  • 传递性:对于任意不为 null 的引用值 x 、y 和 z ,如果 x.equals(y) 是 true ,同时 y.equals(z) 是 true,那么x.equals(z) 一定是 true 。

  • 一致性:对于任意不为 null 的引用值 x 和 y ,如果用于 equals 比较的对象信息没有被修改的话,多次调用时x.equals(y) 要么一致地返回 true 要么一致地返回 false 。

  • 对于任意不为 null 的引用值 x,x.equals(null) 返回 false 。


全部评论(0)
资讯详情页最新发布上方横幅
推荐阅读
  • 《孙子兵法》全文(附白话译文)
  • 《孙子兵法》全文(附白话译文)
  • 《孙子兵法》第一章:始计1、孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。【译文】孙子说:战争是国家的大事,它关系着人民的生死和宗庙社稷的存亡,是不可不认真考察了解的。2、故经之以五(事),校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民与上同意也,故可(以)与之死,可(以)与之生,而不(畏危)〔诡也〕。天者,阴阳、寒暑、时制也。地者,远近、险易、广狭、死生也。将者,智、信、仁、勇、严也。法者,曲制、官道
  • 文库
  • 编辑:佚名
  • 时间:2023-03-26 04:56
  • 阅读:2
  • javascript中如何匹配具体数量
  • javascript中如何匹配具体数量
  • 说明1、可花括号的数量说明符可用于指定匹配模式的上下限。但是有时候只需要特定数量的匹配。2、指定一定数量的匹配模式,只需在大括号之间放置一个数字。实例要求修改正则表达式timRegex,以匹配仅有四个字母 m 的单词 Timber。let timStr = "Timmmmber";let timRegex = /change
  • 技术服务
  • 来源:北极熊
  • 编辑:oal
  • 时间:2023-01-01 14:16
  • 阅读:53
  • javascript中先行断言指的是什么
  • javascript中先行断言指的是什么
  • 说明1、先断言是告诉JavaScript在字符串中向前搜索的匹配模式。如果你想在同一个字符串上搜索多个匹配模式,可能会有用。2、先行断言有两种:正向先行断言和负向先行断言。实例let quit = "qu";let noquit = "qt";let quRegex= /q(?=u)/;let qRegex&
  • 技术文档
  • 来源:北极熊
  • 编辑:oal
  • 时间:2023-01-01 14:15
  • 阅读:58
  • 怎么用JavaScript实现截屏功能
  • 怎么用JavaScript实现截屏功能
  • 1.Blob的媒体类型必须是"image/svg+xml"2.需要一个svg元素3.在svg元素里面插入一个 foreignObject 元素4.在foreignObject元素里面放入符合规范的html把dom转成canvas就这么简单,就上面几个步骤。下面是文档给出的一上简单的demo:
  • 技术文档
  • 来源:北极熊
  • 编辑:oal
  • 时间:2023-01-01 14:14
  • 阅读:60
  • javascript是不是解释型语言
  • javascript是不是解释型语言
  • javascript是具有函数优先的轻量级、解释型的编程语言。javascript被广泛用于web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。本文操作环境:windows10系统、javascript1.8.5、thinkpadt480电脑。JavaScript是一种具有函数优先的轻量级,解释型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScr
  • 技术文档
  • 来源:北极熊
  • 编辑:oal
  • 时间:2023-01-01 14:13
  • 阅读:53
联系我们
电话:18936411277
邮箱:1044412291@qq.com
时间:09:00 - 19:00
公众号:北格软件
底部广告