Ausgabe probleme
-
vielen vielen Dank GPC.
genau meine Probleme!aber bei "System.out.println("dam"+new Dino("MArea"));"
warum Zuerst instantiierst du ein Dino Objektund warum toString() Methode der Dino-Instanz aufrufen?
bis gleich
-
damo schrieb:
vielen vielen Dank GPC.
genau meine Probleme!aber bei "System.out.println("dam"+new Dino("MArea"));"
warum Zuerst instantiierst du ein Dino ObjektIch instanziere gar nichts, sondern du. Aber überleg mal: Bevor die println Methode auf die toString() Methode von Dino zugreifen kann, muss es das Objekt im Speicher geben, daher wird es zuerst erstellt (abgesehen davon wäre alles andere nur unlogisch).
und warum toString() Methode der Dino-Instanz aufrufen?
Na ja, die println - Methode muss ja etwas ausgeben, und zwar Strings. Da aber Dino KEIN String ist, sondern ein Dino, versucht println die Methode toString aufzurufen (die du überschrieben hast), welche einen String zurückliefert. Diesen String ("OTTO") kann println verwerten. Ende gut, alles gut.
Der Ablauf ist folgendermaßen:
Schwein instantiieren (in main) Member Variable m vom Typ Dino anlegen -> Ctor von Dino mit "Tim" aufrufen Ausgabe: "Dino Tim" Instantiieren von einem weiteren Dino (anonym) -> Ctor von Dino mit "MArea" aufrufen Ausgabe: "Dino MArea" Ausgabe des Dino-Objekts -> System.out.println ruft toString - Methode von anonymer Dino - Instanz auf Ausgabe: "dam OTTO"
Jetzt alles klar?
MfG
GPC
-
sorry, bin Dummi
1.System.out.println("damo"+1); //damo1
zuerst "damo", dann "1"
System.out.println("damo"+new Dino("MArea"));
zuerst Dino2.println - Methode muss String ausgeben?
wie kann ich verstehen --- System.out.println(1);3. Dummi hat toString-Methode von Dino gelöscht, dann
Dino@82ba41 // Fehlermeldung, oder...ich kann die println-Mechanismus nicht richtig verstehen, oder?
ich bitte dich um Geduldigkeit
danke sehr
(wer gesagt, Java ist einfach )mfg
damo
-
damo schrieb:
sorry, bin Dummi
1.System.out.println("damo"+1); //damo1
zuerst "damo", dann "1"
System.out.println("damo"+new Dino("MArea"));
zuerst DinoZuerst wird der String zusammengebaut, dann wird er ausgegeben. "println" erwartet genau 1 Argument, dementsprechend ist es gar nicht möglich, dass println erfährt, wie der String zusammengebaut wurde.
2.println - Methode muss String ausgeben?
wie kann ich verstehen --- System.out.println(1);Es gibt tatsächlich mehrere println-Methoden. Je eine für die Primitiven Datentypen, und dann halt noch eine für Strings und Objekte.
Das "toString" wird bei deinem Beispiel auch nicht von der "println"-Methode aufgerufen, sondern von dem "+".
3. Dummi hat toString-Methode von Dino gelöscht, dann
Dino@82ba41 // Fehlermeldung, oder...Das Standardverhalten der toString-Methode. Klassennamen + Speicheraddresse
ich kann die println-Mechanismus nicht richtig verstehen, oder?
Es ist eine ganz normale Methode... da gibts keine versteckten Geheimnisse.
-
Oh,danke schön JBeni.
Zuerst wird der String zusammengebaut, dann wird er ausgegeben. "println" erwartet genau 1 Argument,
aha, jetzt habe ich verstanden!
Das "toString" wird bei deinem Beispiel auch nicht von der "println"-Methode aufgerufen, sondern von dem "+".
perfect erklärt!!!
um besser zu verstehen, gibt es Möglichkeit, z.B "int" auszugeben?
z.B.System.out.println(1 * new Dino("MArea")); //jetzt nicht toString,sondern int toInt(){return 99;}
sorry, wieder Dummi-Frage braucht man nicht zu antworten!
-
Die meisten Operationen (*, -, /, &&, ..) funktionieren nur mit einigen primitiven Datentypen. Das + ist dabei die grosse Ausnahme, es kann auch mit Strings arbeiten (und verwandelt alle anderen Argumente dann ebenfalls in Strings).
Daher: nein, dein Beispiel funktioniert nicht.
-
ist schon ok, vielen vielen Dank JBeni!
auch danke sehr GPC (sorry, ich habe meine Probleme falsch gesagt, ich wollte nie wieder diese komplizierte Sprache benutzen )
-
Da bezeichnet Java als eine komplizierte Sprache
-
java ist komplizierter als C++. glaube ich zumindest.
-
damo schrieb:
java ist komplizierter als C++. glaube ich zumindest.
Nein. Java ist sehr einfach.
-
Java ist sehr einfach.
also, Umfrage, ich bin dagegen!
mfg
damo
-
Auf jeden Fall einfacher als C++
-
- alle Methoden virtual
- keine manuelle Speicherverwaltung
- keine Operatorüberladung
- alle Klassen sind implizit von Object abgeleitet, ist mehr standardisiert
- noch strengere Typüberprüfung als in C++
- Annotationen geben dem Compiler mehr Informationen so das er mehr Überprüfen kann als in C++
- keine Mehrfachvererbung
- kein Präprozessor
das sind so die Dinge die mir spontan einfallen, die Java wesentlich einfacherer machen als C++.
-
Keine komplizieren Pointer/Referenz überlegungen.