首页 > 其他分享 >22-"=="运算符 和 equals()方法的区别

22-"=="运算符 和 equals()方法的区别

时间:2023-09-05 10:45:24浏览次数:41  
标签:判断 String 22 s1 equals 运算符 引用

基本数据类型:byte[1]、short[2]、int[4]、long[8]、float[4]、double[8]、char[2]、boolean[1]

引用类型:类(class)、接口(interface)、数组([])

"==" 运算符

"=="运算符是一个比较运算符,既可以判断基本数据类型,又可以判断引用类型

1) 当判断基本数据类型时,判断的是值是否相等

2) 当判断引用类型时,判断的是引用地址是否相等,即判断是否是同一个对象

equals()方法

1) 只适用于引用数据类型

2) Object类中equals()方法的源码

public boolean equals(object obj) {

  return (this == obj); //this是指类的当前实例

}

2) 对于像String 、Data 、File 、包装类等都重写了 Object类中equals()方法,重写以后的方法比较的不是两个引用地址是否相同,而是比较的两个对象的“实体内容”是否相同

public class Test2 {
    public static void main(String[] args) {
        //创建新的String对象
        String s1 = new String("1234");
        String s2 = new String("1234");
        //"=="运算符判断引用类型时,判断的是地址是否相等;equals方法判断的是内容是否相等
        System.out.println(s1 == s2); //false,s1和s2创建的是两个新的对象
        System.out.println(s1.equals(s2)); //true

        String s3 = s1;
        System.out.println(s3 == s1); //true,s3引用的是s1的地址
        System.out.println(s3.equals(s1)); //true

        //将字符串"1234"放在常量池中
        String s4 = "1234";
        String s5 = "1234";
        //在常量池中的字符串,地址是相同的
        System.out.println(s4 == s5); //true
        System.out.println(s4.equals(s5)); //true
    }
}

 

"==" 运算符和 equals()方法的区别

a) "==" 运算符判断基本类型时,就是比较值;判断引用类型时就是比较引用地址,即在内存中的位置是否相同(完全相同)

b) equals()方法,只能判断引用类型,比较两个对象的“实体内容”是否相同,即对象的内容是否相同(内容相同)

 

标签:判断,String,22,s1,equals,运算符,引用
From: https://www.cnblogs.com/REN-Murphy/p/17679026.html

相关文章

  • Microsoft Visual Studio 2022(编程工具)下载 中文版介绍
    微软强调VisualStudio2022将完全支持.NET6及其统一框架,用于Windows和Mac开发者的Web、客户端和移动应用程序。软件地址:看置顶贴软件功能一、开发:编写没什么错误的代码遇到困难时使用IntelliSense代码建议快速准确地键入变量。无论导航到所需的任何文件、类型、成员......
  • 20230522 java.time.Instant
    介绍java.time.Instant类声明@jdk.internal.ValueBasedpublicfinalclassInstantimplementsTemporal,TemporalAdjuster,Comparable<Instant>,Serializable时间线上的一个瞬时点,可以理解成时刻被称为“新纪元”的时间线原点被设置为穿过伦敦格林威治皇家天文台的......
  • 20230522 java.util.Date
    介绍java.util.DatepublicclassDateimplementsjava.io.Serializable,Cloneable,Comparable<Date>Date类代表一个特定的时间点,精度为毫秒在JDK1.1之前,类Date有两个额外的功能。它允许将日期解释为年、月、日、小时、分钟和秒值。它还允许格式化和解析日期字符串。不......
  • 20230522 java.util.Calendar
    介绍java.util.CalendarpublicabstractclassCalendarimplementsSerializable,Cloneable,Comparable<Calendar>抽象类,提供了特定时刻和一组日历域(field)特定时刻用毫秒值表示,从Epoch1970年1月1日0时(GMT,公历)开始的偏移量getInstance方法返回对象支持Locale,Time......
  • 20230522 java.time.temporal.TemporalField
    介绍java.time.temporal.TemporalFieldpublicinterfaceTemporalField时间域Afieldofdate-time,suchasmonth-of-yearorminute-of-hour日期和时间使用域来表示,这些域将时间线划分为对人类有意义的内容。此接口的实现代表这些域。最常用的单位在ChronoField中定义......
  • 20230522 java.time.temporal.TemporalAccessor
    介绍java.time.temporal.TemporalAccessorpublicinterfaceTemporalAccessor时间访问器定义对时间对象的只读访问,例如日期、时间、偏移量或组合日期、时间和偏移量对象的基本接口类型大多数日期和时间信息都可以表示为数字。这些是使用TemporalField建模的,其中使用long......
  • 20230522 java.time.temporal.Temporal
    介绍java.time.temporal.TemporalpublicinterfaceTemporalextendsTemporalAccessor时间定义对时间对象的读写访问的框架级接口日期、时间和偏移量对象的基本接口类型,可以使用进行修改操作APIisSupportedbooleanisSupported(TemporalUnitunit);minusplusunt......
  • 【题解】NOIP2022
    怎么看T3也不是那么难,可是为啥赛时就是被卡死了[难过]不补\(B\)题了,ad-hoc。A.种花题目描述:小C决定在他的花园里种出\(\texttt{CCF}\)字样的图案,因此他想知道\(\textttC\)和\(\textttF\)两个字母各自有多少种种花的方案;不幸的是,花园中有一些土坑,这些位置无法种......
  • C++11——3.21-3.22 move,forward
    ★★★原文链接★★★:https://subingwen.cn/cpp/move-forward/3.21move资源的转移3.22forward完美转发3.21move资源的转移move方法可以将左值转换为右值使用这个函数并不能移动任何东西,它将一个对象的所有权从这个对象转移到另一个对象,只是转移,没有内存拷贝。move语......
  • ubuntu 22.04 安装docker-ce
    #!/bin/bash##安装依赖sudoapt-getupdatesudoapt-get-yinstallapt-transport-httpsca-certificatescurlsoftware-properties-common##安装GPG证书curl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-##写入软件源信息sudoa......