Variablen Wann werden Instanzvariablen initalisiert?

chaostheory

Bekanntes Mitglied
Hallo,
ich habe eine Frage bezüglich der Initalisierung von Variablen. Mal angenommen ich habe diesen Code:
Java:
public class ImageHandler {
        private Image bubble = ImageIcon(getClass().getClassLoader().getResource("images/Bubble.gif")).getImage();
	
	public ImageHandler() {
		
	}
}

Wann genau wird nun auf die Bilddatei zugegriffen (Oder auf was auch immer, das war nur ein Beispiel)? Und wo liegt der Unterschied zu einer Initialisierung im Konstruktor, die ja erst bei der Erzeugung des Objekts durchgeführt wird?
 
Zuletzt bearbeitet:
wenn du den code compilest und dann wieder decompilest wirst du sehen das der compiler daraus sowas gemacht hat
Java:
public class ImageHandler {
        private Image bubble;
    
    public ImageHandler() {
bubble = ImageIcon(getClass().getClassLoader().getResource("images/Bubble.gif")).getImage()
        
    }
}

heißt : es gibt KEINEN unterschied
 
Zunächst einmal handelt es sich hier nicht um eine Klassen- sondern eine Instanzvariable.
Wann genau wird nun auf die Bilddatei zugegriffen (Oder auf was auch immer, das war nur ein Beispiel)?
Bei der Erzeugung einer Instanz.
Und wo liegt der Unterschied zu einer Initialisierung im Konstruktor, die ja erst bei der Erzeugung des Objekts durchgeführt wird?
Einen relevanten Unterschied gibt es hier nicht - im Detail evtl. schon.
 
Anzumerken wäre vielleicht noch, dass im Titel nach einer Klassenvariablen gefragt wurde, der Beispielcode aber garkeine Klassen- sondern eine Instanz-variable enthält. Was von beiden soll jetzt gelten?
 
heißt : es gibt KEINEN unterschied

Bist du dir da ganz sicher? Ich hatte mal ein Projekt, indem ich eine eigene Klasse FileManager hatte, die im Konstruktor auf verschiedene Dateien zugriff. Wenn ich diese nun in der Main-Klasse im Konstruktor initialisierte gab's kein Problem, habe ich es davor geschrieben gab's nur Stress.

Anzumerken wäre vielleicht noch, dass im Titel nach einer Klassenvariablen gefragt wurde, der Beispielcode aber garkeine Klassen- sondern eine Instanz-variable enthält. Was von beiden soll jetzt gelten?

Sorry, ich bin nicht so fit mit korrekten Bezeichnern. Ich meinte die aus dem Code, also wohl eine Instanzvariable. Wo ist denn da der Unterschied zu einer Klassenvariablen?
 
Zuletzt bearbeitet:
@TO
du hast nur nach dem unterschied der initialisierung gefragt ... und da gibt es wirklich keinen unterschied ...

was du jetzt aber willst ist ein unterschied zwischen den DEKLARATIONEN ! ...
da gibt es natürlich sehr wohl unterschiede ... du musst schon die korrekte frage stellen ...
 
> Ich hatte mal

in Programmiersprachen hat man eigentlich den Vorteil, auch den Code hinzuschreiben, der Probleme macht,
nicht von xy zu spekulieren 😉

als Klassenvariablen kann man die statischen bezeichnen
 
dann schreib das auch so ... und zwar im ersten post ..
sonst musst du dich über falsche antworten nicht wundern ...

im allgemeinen trifft das zu was ich bzw XHelp gepostet haben : es macht unterschiede wo du deklarierst ... aber nicht wo du initialisierst ... da der compiler eh alles in den konstruktor verschiebt ... siehe dazu verlinkte java-insel seite von XHelp ...
 

Zurück
Oben