Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Java Code
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Java Code
 
Autor Nachricht
Kossy
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 09.12.2005
Beiträge: 306

BeitragVerfasst am: 08 Apr 2008 - 20:28:14    Titel: Java Code

Hi Leute, ich habe eine Frage zu dem folgenden Java Programm:

public static void main (String[] args) {

for (int i = 0; i < 10; i++) {
System.out.println("Objekt Nummer" + i + "wird jetzt erzeugt");
String name = new String(); //Hierzu meine Frage
}

}

In der Zeile in der ich einen Kommentar eingefügt habe, wird ja explizit ein String Objekt erzeugt. Dieses geschieht insgesamt 10mal (ist ja definiert in der for-schleife). Meine Frage: Werden jetzt eigentlich insgesamt 10 Objekte im Speicher abgelegt oder nur eins? Wenn es 10 sind, kann ich die dann alle über name ansprechen? Verweist die Referenzvariable name bei jedem Schleifendurchlauf auf ein neues Objekt und die alten werden gelöscht?

Danke euch für die Mithilfe!
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 08 Apr 2008 - 20:39:55    Titel:

Die Schleife ist, vorsichtig ausgedrückt, vollkommener Bullshit.

Bei jedem Aufruf jedem Durchlauf wird ein neues String-Objekt erzeugt und die Referenz auf dieses Objekt der Variable name zugewiesen. Die zuvor in dieser Variablen gespeicherte Referenz wird überschrieben.
Das bedeutet, dass auf die dazugehörigen Objekte nichts mehr verweist. Entsprechend werden sie bei Gelegenheit vom Garbadge Collector entsorgt.
Noch witziger wirds dadurch, dass du nach der Schleife nicht einmal auf das letzte erzeugte Objekt zugreifen kannst. Dadurch, dass die Variable innerhalb der Schleife deklariert wurde, ist außerhalb der Bezeichner "name" nicht gebunden. Entsprechend würde der Zugriff auf "name" einen Compilerfehler auslösen.

Effektiv legt die Schleife also 10 neue Objekte an, auf die man nicht zugreifen kann und die direkt danach wieder in die Tonne gekloppt werden.
murekursion
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 10.03.2008
Beiträge: 220

BeitragVerfasst am: 08 Apr 2008 - 20:45:08    Titel:

@sarc: Die Aufgabe sieht stark nach einer typischen Hausaufgabe aus.
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 08 Apr 2008 - 20:58:41    Titel:

Hm... So gesehen könnte das durchaus sein. Allerdings macht mir das dann Angst. Wenn man schon solche Hausaufgaben analysieren darf... Wie soll man dann lernen, guten Code zu schreiben?
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Java Code
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum