1. equal和==的区别
    如果是判断两个基本数据类型的数据是否相等直接使用 ==就可以了;
int a =2;
int b = 2;
System.out.print(a==b)

结果为true

  1.   如果判断两个java对象用==号来判断,判断的是二个java对象的内存地址是否相等,但在实际情况中我们一般认为只要二个java对象的内容相同时就认为是相等的,所以equal()方法要重写。
    
Studetn student1 = new Student(12,"lisi")
Studetn student2 = new Student(12,"lisi")
System.out.pring(s1==s2 )                 //false

结果是错误的,因为比较的是内存地址

Studetn student1 = new Student(12,"lisi")
Studetn student2 = new Student(12,"lisi")
System.out.pring(s1.equal(s2) )                 //false

结果同样是错误的,如果没有重写Student类的equal方法则调用的是Object类的equal方法

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

比较的是内存地地址。

  1. 重写equal方法
    1、用==判断是否成立
    2、判断是否同一类型
    3、判断对象中的属性是否相等
 @Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return Objects.equals(name, student.name) &&Objects.equals(age, student.age);}
  1. 如何比较二个String 类型的数据呢,按理来说是要重写equal方法来比较,但是String 这个类已经重写了equal,所以不需要重写直接用equal方法就可以了。
    String类equal方法源码:
 public boolean equals(Object anObject) {if (this == anObject)  {         //判断内存地址是否相等return true;    }if (anObject instanceof String) {  //判断是否是同一类型String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

思考 如果确定是比较二个String类型直接用==也是可以吗。

 String a = new String("one");String b = new String("one");System.out.println(a==b);                 //false

所以这种说法是错误的。

equal和==区别详解相关推荐

  1. HashTable和HashMap的区别详解

    HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...

  2. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  3. 关于numpy中eye和identity的区别详解

    https://www.jb51.net/article/175386.htm np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=< ...

  4. php为什么需要配置路由器,laravel 配置路由 api和web定义的路由的区别详解

    1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware ...

  5. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  6. Jar/War/Ear等包的作用与区别详解

    Jar/War/Ear等包的作用与区别详解 以客户角度来看,jar文件就是一种封装格式,用户不需要知道jar包中有多少个.class格式的文件及每个文件中的功能与作用,也可以得到相应的访问的结果.ja ...

  7. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

  8. axios请求接口http_使用axios请求接口,几种content-type的区别详解

    axios的使用 安装(一般使用框架的话, 脚手架都集成了) $ npm install axios 请求示例 // POST axios.post('/user', { firstName: 'Fr ...

  9. vue 事件调用 传参_对vue下点击事件传参和不传参的区别详解

    如下所示: {{btn_text1}} {{btn_text2}} var _vm = new Vue({ data : { btn_text1 : '点击1' , btn_text2 : '点击2' ...

  10. 17个之多!Windows Vista各版本功能区别详解

           Vista 开始全球同步上市,版本达17个之多.                Windows Vista各版本功能区别详解 : http://digi.it.sohu.com/2006 ...

最新文章

  1. 页面jlabel背景色设置_(六)使用elementUI搭建管理员页面布局
  2. Cookie与Session的区别
  3. unix下网络编程之I/O复用(二)
  4. Docker系列教程01-Centos7安装新版Docker教程(10步)
  5. Python模块包中__init__.py文件的作用(转载)
  6. 分布式与人工智能课程(part7)--两种绘图思路
  7. 带有示例的Python File readline()方法
  8. python的递归算法学习(1)
  9. C语言标准库<math.h>
  10. android菜单详解四:子菜单
  11. ios查看帧率的软件_查看iOS屏幕帧数MGFPSStatus
  12. 怎么添加网络扫描仪到计算机,MAC如何添加网络扫描仪
  13. 百度SEO工具黑侠超级站群助手v1.9
  14. 合并pd.merge()含有相同的某一列两个不同的dataframe表格
  15. join left loke mysql_mysql监控---慢语句查询
  16. 一个屌丝程序猿的人生(五十一)
  17. CNN与句子分类之动态池化方法DCNN--模型介绍篇
  18. N1 小钢炮docker安装迅雷方法
  19. pandas实战-2012美国总统竞选赞助分析
  20. edge浏览器安装无法连接Internet

热门文章

  1. DSP内核结构中的 D L S M
  2. Java实现房屋租赁网站
  3. walking机器人入门教程-单点导航
  4. Xshell脚本实现自动登陆||自动登陆的几种方式。
  5. 决策树和随机森林预测员工离职率学习代码
  6. 【图像分类】2021-Twins NeurIPS
  7. php自动加nofollow,WordPress自动给文章添加nofollow属性的实现方法
  8. dilated conv带孔卷积、pooling层提高感受野 反卷积 的理解
  9. IDEA快捷键(持续学习ing)
  10. Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换。