2016-08-04 43 views
0
public class Employee { 

    String name; 

public Employee(String var){ this.name=var;} 

} 

public class Main { 

    public static void main(String[] args){ 

     String s1=new String("joe"); 
     String s2=new String("joe"); 

     Employee e1=new Employee("joe"); 
     Employee e2=new Employee("joe"); 

     system.out.println("When comparing String obj:"+s1.equals(s2)); output:TRUE 

     system.out.println("When comparing Employee obj:+e1.equals(e2)): output:FALSE 

我知道我們必須重寫Employee類,但是爲什麼它正在爲String類,我能不能找到等號甲骨文文檔爲String類重寫方法also.Please需要幫助!等於絃樂VS等於爲員工/天波超視距雷達類

+2

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)? – zerkms

+0

當你聲明單獨的對象時,它將不符合條件,如果你將第二個對象聲明爲Employee e2 = e1,它將返回false。那麼它將返回true – Vickyexpert

回答

0

在第一種情況下,您正在檢查字符串。

在第二種情況下,您正在檢查員工的對象。

因爲兩個對象有不同的內存地址。

more details

0

的例子工程,因爲它確實是因爲字符串覆蓋equals方法來檢查字符串的內容的原因,而Employee類使用Object.equals方法來檢查內存位置。

0

不同類別對於什麼使2個對象「相等」有不同的標準。通常情況下,equals()方法返回true,如果是相同的對象:

Object a = new Object(); 
Object b = new Object(); 
return(a.equals(b)); 

這將返回false沉綿他們都是「對象」類,它們是不一樣的實例。 a.equals(a)將返回true。

然而,就像一根繩索的情況下,你可以有2個不同的實例,但字符串平等是基於文本字符組成的字符串:

String a = new String("example"); 
String b = new String("example"); 
String c = new String("another"); 
a.equals(b); 
a.equals(c); 

這些都是不同的字符串的情況,但第一個等於將返回true,因爲它們都是「示例」,但第二個不會因爲「示例」不是「另一個」。