M
makkes
Gast
Guten Abend Allerseits !
Eigentlich programmiere ich schon seit fast drei Jahren immer wieder mal mit Java. Im Moment stehe ich aber *völlig* auf dem Schlauch. Ich mache gerade eine Erfahrung, die mein ganzes Weltbild in Sachen OO auf den Kopf stellt. Ich hoffe es ist ein Syntaxfehler. lol.
Folgender Code:
erzeugt die Ausgabe:
sollte aber doch nach aller Theorie - nach der Java grundsätzlich mit Referenzen arbeitet erzeugen:
Oder objektorientiert gedacht, ändere ich doch die Stringinstanzen fname und lname, was sich dann auch in der Liste niederschlagen müsste.
In Ruby wäre es so:
Was sinnvoll ist, da durch name = "JOHN" ein NEUES Objekt (Chararray) an die Variable name gebunden wird.
der Aufruf "JOHN" erzeugt das Chararray. Schreibe ich in Ruby stattdessen:
Passiert das Erwartete.
name[0..name.length]="" -- >löscht die Zeichen *im bestehenden* Chararray.
name.concat("JOHN") --> hängt an das jetzt leere Chararray die Zeichen JOHN. Intern wird dabei ein neues Array mit dem Inhalt JOHN erzeugt, durch concat werden diese 4 Chars aber wieder ins erste Array gepackt. Sinnvoll also. Etwas undurchsichtig, aber konsequent.
Ich dachte dann ich könnte mal probieren:
anstatt
zu schreiben
das gibt aber auch zurück:
Verwirrt, durcheinander ? Ich auch !
Eigentlich programmiere ich schon seit fast drei Jahren immer wieder mal mit Java. Im Moment stehe ich aber *völlig* auf dem Schlauch. Ich mache gerade eine Erfahrung, die mein ganzes Weltbild in Sachen OO auf den Kopf stellt. Ich hoffe es ist ein Syntaxfehler. lol.
Folgender Code:
Java:
import java.util.ArrayList;
class Test{
public static void main(String args[]){
ArrayList<String> name = new ArrayList<String>();
String fname = "FOO";
String lname = "BAR";
name.add(fname);
name.add(lname);
fname="JOHN";
lname="DOE";
System.out.println(name.get(0)+ " " +name.get(1));
}
}
erzeugt die Ausgabe:
Java:
FOO BAR
sollte aber doch nach aller Theorie - nach der Java grundsätzlich mit Referenzen arbeitet erzeugen:
Java:
JOHN DOE
Oder objektorientiert gedacht, ändere ich doch die Stringinstanzen fname und lname, was sich dann auch in der Liste niederschlagen müsste.
In Ruby wäre es so:
Java:
name = "FOO"
array = [name]
name = "JOHN"
puts array
==> ["FOO"]
Was sinnvoll ist, da durch name = "JOHN" ein NEUES Objekt (Chararray) an die Variable name gebunden wird.
der Aufruf "JOHN" erzeugt das Chararray. Schreibe ich in Ruby stattdessen:
Java:
name = "FOO"
array = [name]
name[0..name.length]=""
name.concat("JOHN")
puts array
==> ["JOHN"]
Passiert das Erwartete.
name[0..name.length]="" -- >löscht die Zeichen *im bestehenden* Chararray.
name.concat("JOHN") --> hängt an das jetzt leere Chararray die Zeichen JOHN. Intern wird dabei ein neues Array mit dem Inhalt JOHN erzeugt, durch concat werden diese 4 Chars aber wieder ins erste Array gepackt. Sinnvoll also. Etwas undurchsichtig, aber konsequent.
Ich dachte dann ich könnte mal probieren:
anstatt
Java:
fname="JOHN";
lname="DOE";
zu schreiben
Java:
fname.replace(fname,"JOHN");
lname.replace(lname,"DOE");
das gibt aber auch zurück:
Java:
FOO BAR
Verwirrt, durcheinander ? Ich auch !