neu definiert haben Ich bin ein Neuling für Java. Jetzt studiere ich Gleichheit und == und Neudefinition von equals und toString.So drucken Sie die Adresse eines Objekts, wenn Sie die toString-Methode
Ich möchte sowohl die ToString-Methode, die ich neu definiert habe, und die Standardmethode, die von der Object-Klasse geerbt wird.
Ich habe diesen Supermodifikator nicht benutzt, um diese Methode zu erreichen.
Dies ist nur für Bildungszwecke. Was ich gerne sehen möchte, ist klarer, wenn Sie sich die Kommentare in meinem Code anschauen.
Können Sie mir hier helfen?
Mein Code ist:
public class EqualTest{
public static void main(String[] args){
Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);
//System.out.super.println(alice1);
Employee alice2 = alice1;
//System.out.super.println(alice2);
Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);
//System.out.super.println(alice3);
System.out.println("alice1==alice2: " + (alice1==alice2));
System.out.println("alice1 == alice3: " + (alice1==alice3));
System.out.println("alice1.equals(alice3): " + alice1.equals(alice3));
}
}
class Employee{
...
public String toString(){
return getClass().getName() + "[name = " + name +
", salary=" + salary + ", hireDay=" + hireDay + "]";
}
}
Erstens heißt es nicht neu definiert, es heißt Overriding –
Aber die Standardimplementierung gibt die Adresse des Objekts nicht zurück. Es gibt den Klassennamen und den HashCode dieses Objekts zurück. Aus der Dokumentation von java.lang.Object: 'getClass(). GetName() +' @ '+ Integer.toHexString (hashCode())' – Matthias
Nun, ja. Aber der Hash-Code ist die Adresse. Sehen Sie sich die Dokumentation für Object hashCode an: Dies wird normalerweise implementiert, indem die interne Adresse des Objekts in eine Ganzzahl umgewandelt wird, aber diese Implementierungstechnik wird von der JavaTM-Programmiersprache nicht benötigt. Der Hashcode ist also genau die gleiche Hexadezimalzahl, die die Adresse darstellt. Aber es wird in Dezimal umgewandelt. – Kifsif