我今天换了讲师,他用一个奇怪的代码对我说。(他说使用.equals
更好,当我问为什么时,他回答说:“因为它就是!”)
下面是一个例子:
if (o1.equals(o2))
{
System.out.println("Both integer objects are the same");
}
而不是我所习惯的:
if (o1 == o2)
{
System.out.println("Both integer objects are the same");
}
这两者之间有什么区别。为什么他的方式(使用.equals
)更好?
Found this快速搜索,但我真的不能理解这个答案:
发布于 2012-06-09 00:26:03
==是一个运算符。equals是Object类中定义的方法
==检查两个对象在内存中是否具有相同的地址,对于原语,它检查它们是否具有相同的value.equals方法,另一方面,它检查正在比较的两个对象是否具有相等的值(这取决于对象的equals方法是如何实现的。equals方法不能应用于基元(这意味着如果a是基元,则不允许使用a.equals(某个对象),但是允许使用someobject.equals(a) )。
发布于 2015-09-18 13:10:42
==运算符比较两个对象引用,以检查它们是否引用同一实例。这也将在成功的match.for示例中返回true
public class Example{
public static void main(String[] args){
String s1 = "Java";
String s2 = "Java";
String s3 = new string ("Java");
test(Sl == s2) //true
test(s1 == s3) //false
}}
上面的示例==是一个引用比较,即两个对象指向相同的内存位置
String equals()的计算结果是对象中值的比较。
public class EqualsExample1{
public static void main(String args[]){
String s = "Hell";
String s1 =new string( "Hello");
String s2 =new string( "Hello");
s1.equals(s2); //true
s.equals(s1) ; //false
}}
上面的例子比较了字符串的内容。如果字符串匹配,则返回true,否则返回false。
发布于 2015-03-20 21:19:56
public static void main(String[] args){
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1.equals(s2));
////
System.out.println(s1 == s2);
System.out.println("-----------------------------");
String s3 = "hello";
String s4 = "hello";
System.out.println(s3.equals(s4));
////
System.out.println(s3 == s4);
}
在这段代码中,你可以同时使用'==‘和'.equals’
这里,.equals用于比较引用对象,而'==‘用于比较对象的状态。
https://stackoverflow.com/questions/1643067
复制相似问题