在java中包含的关系操作符有小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。

对象的等价性:

==和!=适用所有对象,但是这两个操作符通常在比较对象的时候会出问题,下面一个列子:

public class Test {public static void main(String[] args) {String s1=new String("xxxx1");String s2=new String("xxxx1");System.out.println(s1==s2);System.out.println(s1!=s2);}
}

输出:false

true

在这里==和!=比较的是对象的引用。尽管对象的内容相同,但是对象的引用却是不同的,说以s1==s2是false。

如果想比较两个对象的实际内容是否相同,此时,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”,基本类型直接使用==和!=即可,列子:

public class Test {public static void main(String[] args) {String s1=new String("xxxx1");String s2=new String("xxxx1");System.out.println(s1.equals(s2));}
}

输出:true

但是也有例外!!!!!!

假如你创建了自己的类,就想下面这样:

public class Test {static int i;static class EqualsMethod2{public static void main(String[] args) {Test t1=new Test();Test t2=new Test();t1.i=t2.i=100;System.out.println(t1.equals(t2));}   }
}

输出:false

这是由于equals()的默认行为是比较引用。所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为。

大多数java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用,

最后需要我们自己实现equals()方法,如下:

public class Test {static int i;static class EqualsMethod2{public static void main(String[] args) {Test t1=new Test();Test t2=new Test();t1.i=t2.i=100;System.out.println(t1.equals(t2));}   }@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stubif(this==obj){return true;}if(obj instanceof Test){Test tx=(Test) obj;int t1=this.i;int t2=tx.i;if(t1==t2){return true;}else{return false;}}return false;}
}

这样,输出就是:true;

java关系操作符==和equals()区别相关推荐

  1. C#和Java中“==”和“equals”区别

    C#中"=="和"equals"区别如下: 1 using System; 2 class Program 3 { 4 public static void M ...

  2. java之==和equals区别

    2019独角兽企业重金招聘Python工程师标准>>> "=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals所 ...

  3. Java之 == 和 equals() 区别 hashCode() 解析

    equals和HashCode深入理解以及Hash算法原理 https://blog.csdn.net/qq_21688757/article/details/53067814 hashCode ht ...

  4. Java 中 == 与 equals 区别,再确认一遍?

    碰到"equals"和"=="这两个字符,老感觉差不多:其实还是有一些区别的,今天小编带大家一探究竟! 01.==介绍 它的作用是判断两个对象的地址是不是相等. ...

  5. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

  6. java中==和equals的区别

    package com.atguigu.java1;import java.sql.Date;/** * equals()和==的区别* *一.回顾==的使用*==:运算符* 1.可以使用在基本数据类 ...

  7. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

  8. Java基础之equals和==的区别深入解析

    Java基础之equals和==的区别深入解析 以下是本文目录大纲 equals 和 == 的区别 equals 的重写 复写hashCode方法,有31这个数字的作用 1. equals 和 == ...

  9. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  10. Java中的equals学习小结

    Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其 主要内容,而且要将 = =和 equals列为重要的对比概念来 ...

最新文章

  1. 种子文件多服务器,使用bitcomet制作torrent文件 [BitComet]
  2. python下什么版本-python版本有什么不同
  3. Servlet 工作原理解析--转载
  4. 1005 Spell It Right (20 分)——13行代码Ac
  5. PHP-cli 日志彩色玩法 echo \033[1;33m Hello World. \033[0m \n;
  6. Maven基础了解及配置信息
  7. YBTOJ洛谷P4298:祭祀(二分图匹配)
  8. junit4 单元测试框架_超越JUnit –测试框架的替代方案
  9. Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶啥都有!
  10. LeetCode 326. Power of Three
  11. 字体样式 font-family 0911
  12. 编程之美读书笔记1.2——中国象棋将帅问题
  13. 回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012
  14. 小白怎么入行网络安全?看这一篇就够啦!
  15. 排列组合的写法_排列组合公式探究
  16. 动态控制水晶报表中数字栏位的值显示的小数位数
  17. 头条抖音后端技术3面,2021大厂Java面试题精选
  18. python数字识别kaggle论文_基于Python语言Kaggle的数据集分析
  19. 基于C#Winform+MySQL的商务娱乐会馆自助服务系统
  20. 做人晶莹剔透,做事水滴石穿

热门文章

  1. React:react-router
  2. HTML:页面布局和背景
  3. Pulsar较Kafka的优势
  4. 时间和日期的JS库Day.js入门教程
  5. SpringMVC读取资源文件的几种方式
  6. 如何更高效地学习3D视觉?
  7. 在Windows系统上安装PHP工作环境
  8. [CTSC2008]祭祀
  9. 隐藏WIN10资源管理器中的3D对象文件夹
  10. 高净值人群依靠什么可以挣那么多钱?