“.equals”和“=”之间有什么区别?

“.equals”和“=”之间有什么区别?

我今天换了个讲师,他用奇怪的代码对我说。)他说最好用.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)好多了?

找到这个在快速搜索中,但我真的无法理解这个答案:


慕码人8056858
浏览 517回答 3
3回答

拉风的咖菲猫

在爪哇,==总是只比较两个引用(对于非原语,即),即它测试两个操作数是否引用同一个对象。但是,equals方法可以重写-因此两个不同的对象仍然可以相等。例如:String x = "hello";String y = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });System.out.println(x == y);  // falseSystem.out.println(x.equals(y)); // true另外,值得注意的是,任何两个都是相等的串常数(主要是字符串文本,但也包括通过串联的字符串常量的组合)最终将引用相同的字符串。例如:String x = "hello";String y = "he" + "llo";System.out.println(x == y); // true!这里x和y是对同一字符串的引用,因为y是等于"hello".

慕的地6264312

=运算符比较这些对象是否相同实例..相等()Oerator比较对象状态(例如,如果所有属性相等)。当一个对象与另一个对象相等时,甚至可以重写Eques()方法来定义自己。

幕布斯6054654

如果你和我每个人走进银行,每个人都开一个全新的账户,每个存款100美元,那么.myAccount.equals(yourAccount)是true因为他们有同值,但是myAccount == yourAccount是false因为他们不是同一帐户.(假设对Account当然是上课。;-)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java