关于equals和==的总结
来源:互联网 发布:淘宝铝合金箱子 编辑:程序博客网 时间:2024/05/16 17:38
在计算机语言中,==才代表传统意义上的相等,=确是一种赋值的语句,经常使用==来进行判断前后两者是否是相等,equals两者的区别也是一种常见的话题。
废话不闲聊,之间上代码:
String str1 = "123";
String str2 = "123";
System.out.println(str1==str2); //true 常量池里面的所以地址也是一样的
System.out.println(str1.equals(str2)); //true
String str3 = new String("132");
String str4 = new String("132");
System.out.println(str3==str4); //false......比较的是地址
System.out.println(str3.equals(str4)); //true
String str5 = "66";
String str6 = new String("66");
System.out.println(str5==str6); //false
str6 = str6.intern();//intern()函数将字符串的内容放到常量池中
System.out.println(str5==str6); //true
----------------------------------------------------分割线---------------------------------------------------------------
Integer i1 = new Integer(123);
Integer i2 = new Integer(123);
System.out.println(i1==i2); //false 比较的是地址
System.out.println(i1.equals(i2)); //true
-----------------------------------------------------分割线--------------------------------------------------------------
//为什么这个就是true??????
Integer i3 = 100;
Integer i4 = 100;
System.out.println(i3==i4);//true
System.out.println(i3.equals(i4));//true
//为什么下面这个就true?????
Integer i5 = 129;
Integer i6 = 129;
System.out.println(i5==i6);// false 存储于
System.out.println(i5.equals(i6));// true
------------------------------------------------------------------------------------------------------------------------
总结下:
1、自认为== 与equals并没有关系,==比较的是两个被比较的地址,而equals的比较对象具体还得看调用者的实现方法。
2、对于String类型的一点总结,String如果直接赋值,就会将变量的值存放在常量池中,在常量池中存在的如果下次,还有相同的
field,就会指向这个”常量值“,所以==返回true
3、new 对象是从新在一个堆内存开辟空间,所以对于两个虽然,传递参数是一样的实例而言,存放的地址还是不一样的,== 检验的是地址,所以返回的自然就是false
4、对于Integer如果是new一个对象的话,地址是不同的自然就不用说了,原理和String一样
5、对于常量的赋值,如果赋值的范围在-128~127之间,那么就会返回 true,之外返回false。对于这种原因是因为Integer类内部对value值为-128到127范围[-128,127]的实例缓存了下来。这样就解释了上面的问号!!!!
- 关于equals和==的总结
- 关于“==”和“equals”的区别
- 关于Equals 和== 的区别
- 关于==和equals的区别
- 关于Equals 和== 的区别
- 关于String的==和equals
- 关于equals 和 == 的理解
- 关于==和equals的小结
- 关于“==” 和equals()方法以及String类的一写总结
- 关于 “Equals”和“==”
- 关于 == 和 equals
- 关于“==”和“equals()”
- 关于 == 和 equals
- 关于equals和==
- == 和equals 总结
- 关于字符串==和equals的区别 ==对象相同 equals对象内容相同
- 关于equals()和==操作的一点理解
- 关于hashCode,equals和==的一点个人意见
- 写一个函数,从一个字符串查找另一个字符串的位置
- 实验一、线性表的基本操作及实现
- 5368. 【NOIP2017提高A组模拟9.16】为逝去的公主献上的七重樱 单调队列
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E. Half-consecutive Numbers
- Calico 的网络结构是什么?- 每天5分钟玩转 Docker 容器技术(68)
- 关于equals和==的总结
- [Spark]
- IE浏览器用GET方式传递中文字符出现乱码问题的解决方法
- Spring bean id相同覆盖的问题解决
- 使用Java自带命令jstack生成线程快照
- Coin 2017icpc-西安赛区 牛顿二项式
- [Spark]Could not locate executable null\bin\winutils.exe in the Hadoop binaries
- RCS参考资料汇总
- 位运算符&移位运算符