java equals() 与‘==’区别
2015-12-24 21:11
246 查看
java中数据类型有基本类型和引用类型。
‘==’如果比较基本类型,直接比较值,值相等就返回true
‘==’如果比较引用类型,比较的是虚地址,不是同一个对象肯定不可能相等,就算值相同也是false
equals()方法是Object中的一个方法,基本类型无法调用此方法,他比较的也是对象的虚地址,但是很多类中都对equals方法进行了重写
比如String类重写了equals()方法,比较的是字符串的值,也就是说如果两个String类型的字符串如果值相同,那么他们比较就返回true
下面是一些实例:
‘==’如果比较基本类型,直接比较值,值相等就返回true
‘==’如果比较引用类型,比较的是虚地址,不是同一个对象肯定不可能相等,就算值相同也是false
equals()方法是Object中的一个方法,基本类型无法调用此方法,他比较的也是对象的虚地址,但是很多类中都对equals方法进行了重写
比如String类重写了equals()方法,比较的是字符串的值,也就是说如果两个String类型的字符串如果值相同,那么他们比较就返回true
下面是一些实例:
String a = "a"; String b = "a"; String c = new String("a"); String d = new String ("a"); System.out.println(a == b); System.out.println(a.equals(b)); System.out.println(c == d); System.out.println(c.equals(d)); Integer e = 14; Integer f = 14; System.out.println(e == f); System.out.println(e.equals(f)); int g = 1; int h = 1; System.out.println(g == h);
打印结果是: true//jvm有一个常量池,a创建的时候先去常量池里找有没有"a"这个常亮,有的话就直接拿来用,没有 就新建一个,a创建之后常量池里就有"a"了,b创建的时候先去常量池里找,有的话就直接拿来用,所以他 俩指向的是同一个对象,虚地址相同,因此返回true true//String类重写了equals方法,比较的是字符串的值,因此返回true false//c,d都是new出来的,并不是从常量池拿的,不是一个对象,因此返回false true//跟第二个true同理 true//同理 true//同理 true//基本类型就不用说了吧(有人可能会问,怎么没equals,基本类型能有equals方法吗,哈哈)
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序