1.除 float 和 double 外的原始数据类型 : 使用 ==

long a = (long) 1234567890;long b = (long) 1234567890;if (a ==b) {

System.out.println("基本数据类型相等");

}

2.包装类使用 equals 或者转换为基本数据类型再用 ==

Long a = (long) 1234567890;

Long b= (long) 1234567890;if (a != null &&a.equals(b)) {

System.out.println("包装类相等");

}if (a != null && a.longValue() ==b.longValue()) {

System.out.println("包装类相等");

}

3.对象要用 equals

String a1= null;

String b1= newString();if (a1 != null && a1.length() > 0 &&a1.equals(b1)) {

System.out.println("对象相等");

}

附录:

public static void main(String[] args) {

System.out.println("-----");

int a = 200;

int a2 = 200;

if (a == a2) {

System.out.println("相等");//√

}

System.out.println("-----");

Integer b = 200;

Integer b2 = 200;

if (b == b2) {

System.out.println("相等");//-128~127√

}

if (b.equals(b2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

Integer c = new Integer(200);

Integer c2 = new Integer(200);

if (c == c2) {

System.out.println("相等");

}

if (c.equals(c2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

if (a==c){

System.out.println("相等");//√

}

if (c.equals(a)){

System.out.println("相等2");//√

}

if (b==c){

System.out.println("相等3");

}

if (c.equals(b)){

System.out.println("相等4");//√

}

}

public static void main(String[] args) {

System.out.println("-----");

String a = "a";

String a2 = "a";

if (a == a2) {

System.out.println("相等");//√

}

if (a.equals(a2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

String b = new String("a");

String b2 = new String("a");

if (b == b2) {

System.out.println("相等");

}

if (b.equals(b2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

if (a == b) {

System.out.println("相等");

}

if (a.equals(b)) {

System.out.println("相等2");//√

}

}

public static void main(String[] args) {

System.out.println("-----");

boolean a = true;

boolean a2 = true;

if (a == a2) {

System.out.println("相等");//√

}

System.out.println("-----");

Boolean b = true;

Boolean b2 = true;

if (b == b2) {

System.out.println("相等");//√

}

if (b.equals(b2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

Boolean c = new Boolean(true);

Boolean c2 = new Boolean(true);

if (c == c2) {

System.out.println("相等");

}

if (c.equals(c2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

if (a == c) {

System.out.println("相等");//√

}

if (c.equals(a)) {

System.out.println("相等2");//√

}

if (b == c) {

System.out.println("相等3");

}

if (c.equals(b)) {

System.out.println("相等4");//√

}

}

超类 Object 中有这个 equals() 方法,该方法主要用于比较两个对象是否相等。该方法的源码如下:

public boolean equals(Object obj) {

return (this == obj);

}

我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用 Object 的 equals() 方法是比较两个对象的内存地址是否相等,即若 object1.equals(object2) 为 true,则表示 equals1 和 equals2 实际上是引用同一个对象。虽然有时候 Object 的 equals() 方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候 Object 的 equals() 方法就不可以了,实际上 JDK 中,String、Math 等封装类都对 equals() 方法进行了重写。

在 Java 规范中,它对 equals() 方法的使用必须要遵循如下几个规则:

equals 方法在非空对象引用上实现相等关系:

1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。

2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。

4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

5、对于任何非空引用值 x,x.equals(null) 都应返回 false。

对于上面几个规则,我们在使用的过程中最好遵守,否则会出现意想不到的错误。

在 java 中进行比较,我们需要根据比较的类型来选择合适的比较方式:

1) 对象域,使用 equals 方法 。

2) 类型安全的枚举,使用 equals 或== 。

3) 可能为 null 的对象域 : 使用 == 和 equals 。

4) 数组域 : 使用 Arrays.equals 。

5)除 float 和 double 外的原始数据类型 : 使用 == 。

6) float 类型: 使用 Float.foatToIntBits 转换成 int 类型,然后使用==。

7) double 类型: 使用 Double.doubleToLongBit 转换成 long 类型,然后使用==。

java相等_Java 判断相等相关推荐

  1. 素数判断的java方法_java判断数字是否是素数的方法

    java判断数字是否是素数的方法 发布时间:2020-06-25 15:22:15 来源:亿速云 阅读:90 作者:Leah 本篇文章给大家分享的是有关java判断数字是否是素数的方法,小编觉得挺实用 ...

  2. java 百家姓_java判断姓是否合格 百家姓

    java判断姓是否合格 百家姓 package util; import java.lang.reflect.Array; public class FirstName { public static ...

  3. java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字_灵思致远Leansmall的博客-CSDN博客_java判断字符串只包含数字字母

    import java.util.regex.Matcher; import java.util.regex.Pattern;public class StrValidate {// 纯数字priva ...

  4. java根据时间判断星期几_java怎么根据日期判断是星期几

    java怎么根据日期判断是星期几 发布时间:2020-06-23 09:31:18 来源:亿速云 阅读:112 作者:Leah 这篇文章将为大家详细讲解有关java怎么根据日期判断是星期几,小编觉得挺 ...

  5. java 回车判断_java 判断输入回车符

    java 判断输入回车符 [2021-01-31 09:05:13]  简介: 判断php是否安装成功的方法:首先在php安装路径下创建phpinfo.php文件:然后打开浏览器,在网址输入栏中输入[ ...

  6. java if判断是否为空_java 判断对象是否为空

    java 中如何判断一个未知对象是否为空呢? 下面是一个通用的方法,判断字符串是否为空,集合是否为空,数组是否为空: /** * 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度 ...

  7. java判断空对象为空_Java判断对象是否为空(包括null ,)的方法

    本文实例为大家分享了Java判断对象是否为空的具体代码,供大家参考,具体内容如下 package com.gj5u.publics.util; import java.util.List; /** * ...

  8. java map怎么判断为空_java中如何判断map是否为空

    java中判断map是否为空的方法是:利用isEmpty()函数来判断. (推荐学习:java入门程序) 函数介绍: IsEmpty()是Java中用于判断某种容器是否有元素的系统库函数.如用来判断A ...

  9. java 时间段重叠_Java判断多个时间段是否重叠(重叠区间个数)

    import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 判断多个时间段是否出现重叠 ...

最新文章

  1. 机房设备与线路资源管理
  2. Android 换肤
  3. 【深度学习入门到精通系列】Recurrent和Residual解释
  4. python导出csv不带引号的句子_不带双引号写入CSV文件
  5. 听歌是怀念过去 - 潇洒的走
  6. python学习-异常(异常类型,异常处理、自定义异常)
  7. 还有更多REST技巧
  8. PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件
  9. 使用内存数据库的.NET Core 3.0中基于身份(Identity-Based)的身份验证
  10. android九宫格切图,拼图九宫格切图app
  11. MATLAB2014a的安装
  12. SIGHUP信号相关
  13. (玩转zabbix)硬盘硬件健康状态监控,部件寿命监控
  14. ftp工具 绿色,细数3款绿色 ftp工具
  15. 利用zxing生成二维码
  16. 关于GoldWave给Vegas视频添加音频叠加的教程分享
  17. 华为诺亚方舟实验室招聘AI研究实习生
  18. 【蓝桥杯国赛真题20】Scratch纸牌对对碰 青少年组 scratch蓝桥杯国赛真题和答案讲解
  19. 福大软工1816 - 404 Note Found选题报告
  20. 用heapster实现HPA

热门文章

  1. 带父节点的平衡二叉树_深入理解(二叉树、平衡二叉树、B-Tree、B+Tree )的区别
  2. 中富之命能有多少钱_邯郸白铁风管工每天工资多少钱?白铁风管价格多少钱你能接受?...
  3. Matlab画图技巧之保存超大体积图
  4. linux 检测mysql链接_MySQL笔记
  5. TensorFlow实现简单的卷积网络
  6. OpenCV可移植图形工具HighGUI实现图像和视频操作
  7. 给你的Linux把把脉(内存、磁盘、CPU、网络)
  8. 用 Python 和 werobot 框架开发公众号
  9. C++ 基本数据类型 的 字节数
  10. 记录遇到的Python陷阱和注意点