黑马程序员技术交流社区
标题:
“==”和equals的区别,有什么不同之处吗?
[打印本页]
作者:
jicz007
时间:
2011-10-16 17:26
标题:
“==”和equals的区别,有什么不同之处吗?
本帖最后由 jicz007 于 2011-10-16 17:27 编辑
"=="和equals的区别,有什么不同之处吗?
什么时候用"=="好,什么时候用equals好?
作者:
lvhongpan
时间:
2011-10-16 17:58
== 实际上是比较的两个字符串的物理内存地址而equals 比较两个对象的值(如果默认继承自 OBJECT ,则 equals 比较两个对象地址), String class override 了 Object class 的 equals 方法,实现了自己的方法,所以 equals 比较的是实际值而非地址
作者:
想好了再写
时间:
2011-10-16 19:16
运算符‘==’比较两个对象是否引用同一个实例,而equals()和equalsIgnoreCase()则比较两个字符串对应的每个字符值是否相同。
比如:
String str1=new String("hello!");
String str2=new String("hello!");
那么
str1==str2 为false
str1.equals(str2) 为true
作者:
黄锋
时间:
2011-10-16 19:19
==和equals的区别是
==是指两个对象是否指向同一个内存地址
equals是指两个对象地址中是否存拉相同的内容。
作者:
罗亚东
时间:
2011-10-16 20:12
==和equals()方法的区别,==是比较引用变量的首地址,例如:
String str1=new String("abc");
String str2=new String("abc");
String str3=str1;
if(str1==str2) System.out.println("true");
else
System.out.println("false");则输出结果就为false,结果不等,但是str1和str3是相等的。
equals()比较的是引用变量的内容,if(str1.equals(str3)),则结果就会返回true。
两个数组的比较,equals(int[] a1,int[] a2)。
作者:
朱华
时间:
2011-10-17 12:45
纯手打,请区分。
在不考虑重新方法的情况下,
==指的是比较两个对象的内存地址。
equals指的是比较两个字符串中值是否一样。
但是他们都是有特例的,
比如==,integer的==就是一个特例
Integer int1 = 127;
Integer int2 = 127;
Integer int3 = 128;
Integer int4 = 128;
System.out.println(int1 == int2);
System.out.println(int3 == int4);
复制代码
第一句打印为true,第二句打印为false
这是因为integer有一个类似缓存的处理,他对一个字节以内的数(-128-127之间)都是通过引用来调用,超过1个字节的integer就会另外创建对象了。
对于equals,由于equals是所有类的父类Object类中的一个方法,所以你可以重写这个方法来让他进行不同的比较返回不同的值,但是一般来说它表达的意思都应该是比较所显示的数据是否相等。
作者:
张邦庆
时间:
2011-11-1 18:13
其实跟哈希集合中的覆盖的equals()相同,检查表链中是否有相同的内容
作者:
咖啡
时间:
2011-11-1 20:27
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
作者:
lyz1024
时间:
2012-6-4 23:13
还没有机会尝试一下 帮顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2