equal和==区别详解
- equal和==的区别
如果是判断两个基本数据类型的数据是否相等直接使用 ==就可以了;
int a =2;
int b = 2;
System.out.print(a==b)
结果为true
如果判断两个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);}
比较的是内存地地址。
- 重写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);}
- 如何比较二个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和==区别详解相关推荐
- HashTable和HashMap的区别详解
HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- 关于numpy中eye和identity的区别详解
https://www.jb51.net/article/175386.htm np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=< ...
- php为什么需要配置路由器,laravel 配置路由 api和web定义的路由的区别详解
1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware ...
- python协程详解_对Python协程之异步同步的区别详解
一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...
- Jar/War/Ear等包的作用与区别详解
Jar/War/Ear等包的作用与区别详解 以客户角度来看,jar文件就是一种封装格式,用户不需要知道jar包中有多少个.class格式的文件及每个文件中的功能与作用,也可以得到相应的访问的结果.ja ...
- Java中print、printf、println的区别 详解
Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...
- axios请求接口http_使用axios请求接口,几种content-type的区别详解
axios的使用 安装(一般使用框架的话, 脚手架都集成了) $ npm install axios 请求示例 // POST axios.post('/user', { firstName: 'Fr ...
- vue 事件调用 传参_对vue下点击事件传参和不传参的区别详解
如下所示: {{btn_text1}} {{btn_text2}} var _vm = new Vue({ data : { btn_text1 : '点击1' , btn_text2 : '点击2' ...
- 17个之多!Windows Vista各版本功能区别详解
Vista 开始全球同步上市,版本达17个之多. Windows Vista各版本功能区别详解 : http://digi.it.sohu.com/2006 ...
最新文章
- 页面jlabel背景色设置_(六)使用elementUI搭建管理员页面布局
- Cookie与Session的区别
- unix下网络编程之I/O复用(二)
- Docker系列教程01-Centos7安装新版Docker教程(10步)
- Python模块包中__init__.py文件的作用(转载)
- 分布式与人工智能课程(part7)--两种绘图思路
- 带有示例的Python File readline()方法
- python的递归算法学习(1)
- C语言标准库<math.h>
- android菜单详解四:子菜单
- ios查看帧率的软件_查看iOS屏幕帧数MGFPSStatus
- 怎么添加网络扫描仪到计算机,MAC如何添加网络扫描仪
- 百度SEO工具黑侠超级站群助手v1.9
- 合并pd.merge()含有相同的某一列两个不同的dataframe表格
- join left loke mysql_mysql监控---慢语句查询
- 一个屌丝程序猿的人生(五十一)
- CNN与句子分类之动态池化方法DCNN--模型介绍篇
- N1 小钢炮docker安装迅雷方法
- pandas实战-2012美国总统竞选赞助分析
- edge浏览器安装无法连接Internet