我今天换了讲师,他说我用了一个奇怪的代码.(他说最好使用.equals,当我问为什么时,他回答"因为它是!")
所以这是一个例子:
if (o1.equals(o2))
{
System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)
而不是我习惯的:
if (o1 == o2)
{
System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么区别.为什么他的方式(使用.equals)更好?
通过快速搜索找到了这个,但我无法理解这个答案:
Jon*_*eet 111
在Java中,==总是只比较两个引用(对于非基元,即) - 即它测试两个操作数是否引用同一个对象.
但是,equals可以覆盖该方法 - 因此两个不同的对象仍然可以相等.
例如:
String x = "hello";
String y = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });
System.out.println(x == y); // false
System.out.println(x.equals(y)); // true
Run Code Online (Sandbox Code Playgroud)
另外,值得注意的是,任何两个相等的字符串常量(主要是字符串文字,以及通过串联的字符串常量的组合)将最终引用相同的字符串.例如:
String x = "hello";
String y = "he" + "llo";
System.out.println(x == y); // true!
Run Code Online (Sandbox Code Playgroud)
这里x和y是同一个字符串的引用,因为y是一个编译时间常数等于"hello".
Syl*_*lar 19
==运算符比较对象是否是同一个实例.equals()oerator比较对象的状态(例如,如果所有属性都相等).您甚至可以覆盖equals()方法,以便在对象等于另一个对象时定义自己.
joe*_*ely 14
如果你和我各自走进银行,每个人开一个全新的账户,每个存款100美元,然后......
myAccount.equals(yourAccount)是true因为它们具有相同的价值,但是myAccount == yourAccount是false因为他们不是同一个帐户.(Account当然,假设课程有适当的定义.;-)
| 归档时间: |
|
| 查看次数: |
100486 次 |
| 最近记录: |