Woher kommt diese Eigenschaft

GetIT

Mitglied
Ich lese gerade (mal wieder) das Buch "Java ist auch eine Insel".
Und im Abschnitt über "instanceof" kommt der Codeausschnitt
Code:
o.getClass() == Object.class
vor.

Aber woher kommt die Eigenschaft class (bei Object.class).
In java.lang.Object steht sie nicht.
 

httpdigest

Top Contributor
Die gibt es implizit auf jedem Referenztyp, um das java.lang.Class Objekt zu bekommen, welches diesen Referenztyp als Laufzeitobjekt repräsentiert.
 

Nexialist

Neues Mitglied
Hallo, bin neu hier und möchte mich hier gleich mal dranhängen. Ich lese ebenso gerade das Buch, "Java ist auch eine Insel" - openbook und stehe bei folgendem Code an (3 Klassen und Objekte, 3.7.4 Methoden mit Referenztypen als Parametern).

folgender Codeausschnitt ist mir klar (Listing 3.14 JavaIsAlwaysCallByValue.java):
Code:
import java.awt.Point;
public class JavaIsAlwaysCallByValue {
  static void clear( Point p ) {
    System.out.println( p );  // java.awt.Point[x=10,y=20]
    p = new Point();
    System.out.println( p );  // java.awt.Point[x=0,y=0]
  }

  public static void main( String[] args ) {
    Point p = new Point( 10, 20 );
    clear( p );
    System.out.println( p );  // java.awt.Point[x=10,y=20]
  }
}

Was mir jedoch nicht klar ist, ist jener Codeausschnitt:

Code:
static void clear( Point p ) {
  p.x = p.y = 0;
}

Warum funktioniert das? Warum wird p (die ich in der main-Methode erzeugt habe) beim Aufruf von clear(p) verändert, wenn die Methode clear(p) nur void ist und keine Rückgabe liefert... Wenn ich die Methode clear implementieren würde, würde sie so aussehen:

Code:
static Point clearObj(Point p) {
  p.x = p.y = 0;
  return(p);
}

public static void main(String[] args) {       
  Point p = new Point(10,20);
  p = clearObj(p);
  System.out.println(p);
}

Es funktioniert natürlich auch so... aber dennoch wundert es mich, warum es in der ersten Methode clear(p) ebenso funktioniert.

Bin für jede Antwort dankbar :) LG Nexialist
 

mihe7

Top Contributor
Warum wird p (die ich in der main-Methode erzeugt habe) beim Aufruf von clear(p) verändert, wenn die Methode clear(p) nur void ist und keine Rückgabe liefert...
Wenn Du mir Dein Sparschwein des Typs
Java:
class Sparschwein {
    int inhalt;
}
hinhältst und mir sagst, dass ich es leeren soll
Java:
public void leere(Sparschwein s) {
    s.inhalt = 0;
}
dann entsteht weder ein neues Sparschwein, noch brauche ich Dir das Sparschwein zurück zu geben - ich habe es ja nie besessen.

Anders formuliert: p ist eine Referenz auf ein Objekt des Typs Point und x, y sind veränderliche Attribute des Objekts. Du übergibst eine Referenz auf das Objekt (nicht das Objekt selbst) an eine Methode, die Methode ändert die Attribute (genauer: die Attributwerte) des durch p referenzierten Objekts, und das war's.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Woher kommt diese NullPointerException? Java Basics - Anfänger-Themen 6
D Woher kommt die 48?! Wie setz ich den Anfangswert auf 0??? Java Basics - Anfänger-Themen 8
J Woher kommt das Objekt "Math" bei Math.random(); ? Java Basics - Anfänger-Themen 3
A ArrayIndexOutOfBoundsException - woher kommt er?! Java Basics - Anfänger-Themen 4
M Woher kommt der Funktionsaufruf? Java Basics - Anfänger-Themen 2
B Woher kommt der Name Java? Java Basics - Anfänger-Themen 4
frau-u StackOverflow - woher kommt es? Java Basics - Anfänger-Themen 7
S die java machine läuft viel zuuuu langsam, woher kommt das?? Java Basics - Anfänger-Themen 3
P SimpleEntity und Assert, woher nehmen? Java Basics - Anfänger-Themen 8
T Woher nimmt das Programm die Variablenwerte???? Java Basics - Anfänger-Themen 2
TheMenox Error bei Scanner - woher? Java Basics - Anfänger-Themen 14
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
G hp nimmt daten woher?? Java Basics - Anfänger-Themen 4
G Woher bekomme ich passende .jar-Archive Java Basics - Anfänger-Themen 8
B Anwendungsverzeichnis woher? Java Basics - Anfänger-Themen 5
S Woher Packages bekommen? Wie installieren? (Netbeans) Java Basics - Anfänger-Themen 4
kb woher JUnit? Java Basics - Anfänger-Themen 2
R Woher bekomme ich das aktuelle Jahr oder auch Datum? Java Basics - Anfänger-Themen 4
megachucky Woher bekomme ich Java (außer aus dem netz) ? Java Basics - Anfänger-Themen 12
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
S Wohin kommt das „abstract“? Vor oder nach „public“/ „private“ /... Java Basics - Anfänger-Themen 3
E Was kommt in ein Objekt und was in die Main Methode? Java Basics - Anfänger-Themen 8
I Schleife fragt Wert ab bis 0 kommt (mit IO.java klasse) Java Basics - Anfänger-Themen 16
L Input/Output Wieso kommt diese Ausgabe? Java Basics - Anfänger-Themen 12
V Operatoren Warum kommt bei double bei den Nachkommastellen irgendwann eine 2?! (1.20000000000002) Java Basics - Anfänger-Themen 5
V Operatoren Warum kommt nicht das gewünschte Ergebnis dieser Operation? Java Basics - Anfänger-Themen 3
J Ein Objekt zurückgeben, was kommt dabei raus ? Java Basics - Anfänger-Themen 4
S button kommt durch bild Java Basics - Anfänger-Themen 13
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
Tacofan Hangman - ist der Buchstabe vorhanden wenn ja wo kommt er vor Java Basics - Anfänger-Themen 6
G Vertsändnisfrage zu Code - Wie kommt diese Ausgabe zustande? Java Basics - Anfänger-Themen 2
J BlueJ - kompilieren - und wie weit kommt man mit BlueJ? Java Basics - Anfänger-Themen 4
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
K Methoden ResultSet als Methodenübergabewert kommt leer an Java Basics - Anfänger-Themen 0
C For-Schleife wie kommt man auf die Lösung? Java Basics - Anfänger-Themen 2
M Erste Schritte Wie kommt man auf diese Ausgabe? Java Basics - Anfänger-Themen 3
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
A Input/Output Wo kommt das Newline her? Java Basics - Anfänger-Themen 7
A Wie kommt diese NullPointerException zustande? Java Basics - Anfänger-Themen 13
R Input/Output ImageIO kommt mit pic_url nicht klar Java Basics - Anfänger-Themen 10
D Was kommt raus, wenn NaN mit einer Zahl verglichen wird? Java Basics - Anfänger-Themen 5
K Arraylisten auslesen, kommt nur Quatsch raus Java Basics - Anfänger-Themen 15
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
S Beim kompilieren kommt Ant Build.Was ist das? Java Basics - Anfänger-Themen 8
T TCP, Empfang nur wenn wirklich etwas kommt Java Basics - Anfänger-Themen 6
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
eXistenZ Java-Boon kommt nicht zurrecht mit der Umsetzung einer Aufgabe... Java Basics - Anfänger-Themen 7
B Warum kommt immer die 0 als Ergebnis? Was habe ich falsch gemacht? Java Basics - Anfänger-Themen 18
I Warum kommt der Fehler? Minesweeper programmieren Java Basics - Anfänger-Themen 7
K Wieso kommt ne NullPointerException Java Basics - Anfänger-Themen 3
A nach if abfrage kommt fehler Java Basics - Anfänger-Themen 8
G JFileChooser kommt doppelt Java Basics - Anfänger-Themen 3
P Wieso kommt die Fehlermeldung ".class expected"? Java Basics - Anfänger-Themen 2
P Textdateischreiben, etwas fehlt noch bzw. 1 error kommt Java Basics - Anfänger-Themen 4
J Hilfe Java Hausaufgabe kommt nicht weiter Java Basics - Anfänger-Themen 5
H Server Client, es kommt nichts an. Java Basics - Anfänger-Themen 5
B Char kommt 2 mal im Wort vor (indexOf) Java Basics - Anfänger-Themen 5
L Compilieren funktioniert, aber beim öffnen kommt nichts Java Basics - Anfänger-Themen 7
G Stringsuche: Wie häufig kommt String1 in Strin2 vor? Java Basics - Anfänger-Themen 7
U Wie oft kommt WertX int[] vor? Java Basics - Anfänger-Themen 2
G Java-1.5-Installation: warum kommt keine javac.exe mit? Java Basics - Anfänger-Themen 7
P Wie kann diese Schleife beenden Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
M Wie kommen diese Ausgaben zustande? Java Basics - Anfänger-Themen 12
W Warum diese Fehlermeldung? Java Basics - Anfänger-Themen 12
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
Alen123 Wie würdet ihr diese Aufgabenstellung lösen? Java Basics - Anfänger-Themen 18
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
Fats Waller Wofür stehen diese Konstanten im Java Labyrinth ? Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Wie schreibe ich diese ZEile um? Java Basics - Anfänger-Themen 1
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5
J Womit kann ich diese Methode testen? Java Basics - Anfänger-Themen 5
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
T Was macht diese Zeile? Java Basics - Anfänger-Themen 9
O Was tut diese Methode? und wie müssen die assertions aussehen? Java Basics - Anfänger-Themen 21
F Wie implementiere ich diese Aufgabenstellung? Java Basics - Anfänger-Themen 16
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
F Warum erhalte ich diese Fehler bei der Einbindung von SQLite JDBC in Eclipse? Java Basics - Anfänger-Themen 1
F Warum verläuft DIESE Schleife endlos? Java Basics - Anfänger-Themen 4
D Was bedeutet diese Schreibweise? Java Basics - Anfänger-Themen 9
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
W Wie vermerke ich diese Struktogramm Passage in Java Syntax? Java Basics - Anfänger-Themen 8
N Methoden warum wird diese Methode aufgerufen Java Basics - Anfänger-Themen 9
L Datentypen Date API - diese Woche bestimmen Java Basics - Anfänger-Themen 1
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
B Kann mir jemand diese Bedingung erklären Java Basics - Anfänger-Themen 5
B Wie könnte man mit Java diese Matheaufgabe lösen Java Basics - Anfänger-Themen 7
B Wie würdet ihr diese Methode erklären? Java Basics - Anfänger-Themen 2
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
B Wie funktionieren diese Methoden in diesem Sortierverfahren genau? Java Basics - Anfänger-Themen 2
B Was macht diese Methode? Java Basics - Anfänger-Themen 9
P Was macht diese methode Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben