parameterübergabe

Status
Nicht offen für weitere Antworten.

seal

Mitglied
Hallo,
ich weiß nicht genau, wie diese art der Parameterübergabe in Java genannt wird.
Es geht darum dass manche Variablen die einer Methode übergben werden in der Methode verändert zurückgegeben werden und manche nicht.

Code:
class T { int wert = 7; }
class Prog {
public static void intTausch99(int var1, int var2) {
var1 = 99;
int temp = var1;
var1 = var2;
var2 = temp;
}
public static void objTausch99(T arg1, T arg2) {
arg1.wert = 99;
T temp = arg1;
arg1 = arg2;
arg2 = temp;
}
public static void main(String[] args) {
int i = 7;
int j = 42;
T obj1 = new T(); obj1.wert = 42;
T obj2 = new T();
System.out.println(”i : ” + i + ” j: ” + j);
System.out.println(”X: ” + obj1.wert + ” Y: ” + obj2.wert);
System.out.println(”−−−−−−−−−−”);
intTausch99(i, j ) ;
objTausch99(obj1, obj2);
System.out.println(”i : ” + i + ” j: ” + j);
System.out.println(”X: ” + obj1.wert + ” Y:” + obj2.wert);
}
}

In diesem Fall werden zum Beispiel die normalen Integer (intTausch) durch die Methode verändert. Die Objekte werden nur dann verändert, wenn man ein spezielles Element des Objektes ändert. Arrays verhalten sich genau wie Objekte.

Ich hoffe, dass das einigermaßen versätndlich ist.
Wie lautet die Regel für die Paramenterübergabe?

Danke
 

gex

Bekanntes Mitglied
Du meinst sowas wie "passByValue" bzw. "passByReference" ?

Bei Java ist prinzipiell alles "passByValue", bei Objekte übergibst du die Variable,
diese hat als Wert die Referenf, aber die Übergabe ist immer noch "passByValue" ;)

Wenn du in einer Methode der Variable einfach ein neues Objekt zuweist, so ist
dieses nur lokal gültig, die Referenz wird aber nich "rückwärts reflektiert".

Hoffe auch meine AW ist verständlich ;)
 

seal

Mitglied
Danke, ich denke dass das das ist, was ich meine. Die Werte in den Methoden sind lokal und werdne nicht zurückübergben.
Wenn ich dieses Programm ausführe, dann wird allerdings in Zeile 11 nicht nur arg1, sondern auch obj1 geändert. Warum?
 

gex

Bekanntes Mitglied
Stell dir das so vor:

Eine Variable (bei Objekten) enthält nur eine Referenz (und nicht den Wert) auf das Objekt.
Code:
XYObject var1 = new XYObject(); // hat Referenz A
XYObject var2 = var1; // hat auch Referenz A


Code:
var1.setProperty("abc");
ist äquivalent zu
Code:
var2.setProperty("abc");

Das ist so, weil beide Variablen auf das selbe Objekt zeigen.
Dann spielt es auch keine Rolle, wo du dies ausführst, es verändert immer das Objekt direkt,
die Variable ist in dem Fall wirklich nur eine Referenz.
 

seal

Mitglied
Achso...als wird durch das new T nur quase ein Zeiger auf T erstellt? Ich dachte damit wird ein neues Objekt vom Typ T erstellt.
 

gex

Bekanntes Mitglied
Hehe, ja und richtig ;)

als wird durch das new T nur quase ein Zeiger auf T erstellt?
Ja

Ich dachte damit wird ein neues Objekt vom Typ T erstellt.
Das stimmt auch, das Objekt kommt in den Heap und du erhälst eine Referenz darauf.

Aber deine Methode objTausch99 funktioniert nicht, weil du nur
bei deinen lokalen Variablen die Referenzen vertauschst, und die sind ja eben "passByValue".
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
P Parameterübergabe, von Methode zu Methode zu main Java Basics - Anfänger-Themen 4
J Parameterübergabe in switch? Java Basics - Anfänger-Themen 2
W Was bedeutet im Struktogramm „zufall“ aufrufen (keine Parameterübergabe)? Java Basics - Anfänger-Themen 8
M Methode Objekt als Parameterübergabe Java Basics - Anfänger-Themen 6
B Parameterübergabe in main Java Basics - Anfänger-Themen 1
E Erste Schritte Parameterübergabe - Prozentrechner Java Basics - Anfänger-Themen 5
S Methoden Parameterübergabe Java Basics - Anfänger-Themen 4
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
Joew0815 Parameterübergabe Java Basics - Anfänger-Themen 3
Q Parameterübergabe - Objekt - Referenz Java Basics - Anfänger-Themen 5
K Parameterübergabe im Terminal(Linux) Java Basics - Anfänger-Themen 8
V Parameterübergabe von Methoden verstehen Java Basics - Anfänger-Themen 13
P Java-Konsolenanwendung mit Parameterübergabe (Windows) Java Basics - Anfänger-Themen 3
X Parameterübergabe per Reflection Java Basics - Anfänger-Themen 10
H Parameterübergabe Java Basics - Anfänger-Themen 4
X Parameterübergabe Java Basics - Anfänger-Themen 6
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
K Input/Output switch case - Parameterübergabe args[0] Java Basics - Anfänger-Themen 34
E Einfache Frage zur Parameterübergabe in Methoden Java Basics - Anfänger-Themen 8
A Parameterübergabe zwischen statischen und nicht statischen Klassen Java Basics - Anfänger-Themen 6
L Parameterübergabe Java Basics - Anfänger-Themen 6
K Parameterübergabe Java Basics - Anfänger-Themen 3
W Parameterübergabe Java Basics - Anfänger-Themen 9
Y Probleme mit Parameterübergabe Java Basics - Anfänger-Themen 8
O Parameterübergabe mit RadioButtons Java Basics - Anfänger-Themen 2
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
G Parameterübergabe über mehrer Klassen Java Basics - Anfänger-Themen 2
M Parameterübergabe an *.jar Java Basics - Anfänger-Themen 5
M Parameterübergabe an externe JAR-Datei? Java Basics - Anfänger-Themen 2
B Frage zu Code (Parameterübergabe) Java Basics - Anfänger-Themen 14
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
B printf() mit Parameterübergabe? Java Basics - Anfänger-Themen 2
G Parameterübergabe als Referenz bzw. als Kopie Java Basics - Anfänger-Themen 4
G Java Applikation ein Programm mit Parameterübergabe starten Java Basics - Anfänger-Themen 3
V doPost parameterübergabe funktioniert nicht. Java Basics - Anfänger-Themen 5
G Problem bei Parameterübergabe Java Basics - Anfänger-Themen 2
T Runtime.getRuntime().exec mit parameterübergabe Java Basics - Anfänger-Themen 16
roflomfg Parameterübergabe in in "*.jar" files möglich? Java Basics - Anfänger-Themen 8
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
D probleme bei der Parameterübergabe Java Basics - Anfänger-Themen 12
M Parameterübergabe Java Basics - Anfänger-Themen 7
J Nested Layouts - Parameterübergabe bei ActionListener Java Basics - Anfänger-Themen 2
M Parameterübergabe! Java Basics - Anfänger-Themen 4
M Probleme bei Parameterübergabe in Rekursion Java Basics - Anfänger-Themen 5
K Parameterübergabe bei quickSort Java Basics - Anfänger-Themen 6
G Parameterübergabe bei Runtime.getRuntime().exec Java Basics - Anfänger-Themen 16
J parameterübergabe arraylist Java Basics - Anfänger-Themen 9
D args und parameterübergabe Java Basics - Anfänger-Themen 8
D Parameterübergabe mit JSP Java Basics - Anfänger-Themen 2
I Parameterübergabe beim Aufruf in der Kommandozeile Java Basics - Anfänger-Themen 4
B Parameterübergabe und return; Java Basics - Anfänger-Themen 3
F Performanceverlust bei ständiger Parameterübergabe? Java Basics - Anfänger-Themen 4
K Parameterübergabe Java Basics - Anfänger-Themen 5
R Parameterübergabe Java Basics - Anfänger-Themen 13
H Parameterübergabe zwischen einzelnen Funktionen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben