Rückgabewert bei Methoden

mrbela

Bekanntes Mitglied
Hallo Leute,

eine relativ banale Frage, ich möchte sie aber dennoch stellen.

Es sei die Klasse Foo gegeben durch

Java:
public class Foo {

	private String s;
	
	public Foo() {
		s = "Hello World";
	}

	public String getS() {
		return s;
	}

	public void setS(String s) {
		this.s = s;
	}
	
	public static void main(String[] args) {
		Foo f = new Foo();
		f.getS();
	}
}

Bei dem Aufruf von f.getS() wird da eine Kopie der Referenz s (this.s) auf das String-Objekt zurückgegeben, oder exakt die selbe Referenz this.s?

Ich vermute mal ersteres, ähnlich wie bei einem Methodenaufruf mit einem Objekt und dem Call-by-value.

Danke für Eure Hilfe!
 

VfL_Freak

Top Contributor
Moin,

Also ist es eine Kopie der Referenz, die zurückgegeben wird?
Nicht ganz ...

Hast Du den letzten Satz im geposteten Link gelesen ???:L

Java verwendet "Call-by-Value" sowohl für primitive Datentypen als auch für Objekte. Letzteres wird manchmal zur Präzisierung auch "Call-by-Value where the value is a reference" genannt – doch es ist immer noch ein "Call-by-Value".

Gruß
Klaus
 
T

trez

Gast
Wenn von einem Objekt die Referenz übergeben wird soll das Call by Value sein???
"call by reference" ist "call by value" weil der "value" eine "reference" ist???

Sorry, aber das ist, egal wer es behauptet hat, schlicht und einfach Käse!
Was Programmiersprachen betrifft mag ich schwer von Begriff sein, aber bei der Aussage handelt es sich um menschliche Sprache und die habe ich schon eher im Griff.

Es handelt sich da IMHO nur um eine Ausrede, weil die Javaentwickler anfänglich behauptet haben, Java verwende keine Referenzen und die Leute das geglaubt haben, bis sie die erste NPE gesehen haben.

Es ist eine Tatsache, dass man keine Objekte sondern nur deren Referenz übergeben kann - ergo handelt es sich nicht um eine Kopie des Objektes sondern um eine Referenz auf ein Objekt und das ist Call by Reference. ("static t Test" im folgenden Beispiel)

Call bei Value ist, wenn die eigentliche Variable vor der Übergabe kopiert wird -> siehe "static int i" im folgenden Beispiel.

Java:
package test;

public class CallByRefBeweis {
	
	private static class Test {
		
		private int value;
		
		public void set(int value) {
			this.value=value;
		};
		
		public String toString() {
			return "value is " + value; 
		}
	}
	
	static int i;

	private static void change(Test t) {
		t.set(42);
	}
	
	private static void change(int i) {
		i = 42;
	}

	public static void main(String[] args) {
		Test t = new Test();
		t.set(1);
		System.out.println(t);
		change(t);
		System.out.println(t);
		i = 1;
		System.out.println("value is " + i);
		change(42);
		System.out.println("value is " + i);
	}
}

/*
Ausgabe:
value is 1
value is 42
value is 1
value is 1
*/

Zerreisst mich ruhig ohne meine Argumente aufzugreifen - ich reagiere dazu nicht mehr.
 

Deros

Bekanntes Mitglied
Was soll man denn jetzt erklären?
Wahrscheinlich warum im letzten Fall 1 raus kommt und nicht 42?
Weil es einfach falsch programmiert ist? die Methode change(int i) müsste der Parameter irgendwie anders heißen z.B. k sonst müsste man vor dem i ein this benutzen damit bekannt ist das nicht der Parameter genutzt werden soll. So ist die Methode auf jedenfall komplett sinnfrei....:shock:
 

Bananabert

Bekanntes Mitglied
Moin,

wenn es Call-By-Reference wäre, könntest du in deinem Beispiel in
Java:
private static void change(Test t){
	t = new Test();
}
t einer neuen Instanz zuweisen, geht aber nicht.
Die Referenz ist als Value übergeben, daher kannst du auch Werte am Objekt verändern.
Auch in dem Link von VfL_Freak nachzulesen.

parameter passing - Is Java "pass-by-reference" or "pass-by-value"? - Stack Overflow
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
J Methoden mit und ohne Rückgabewert Java Basics - Anfänger-Themen 22
B Methoden, Rückgabewert und Verknüpfungen Java Basics - Anfänger-Themen 15
V OOP Klassen Methoden Rückgabewert Java Basics - Anfänger-Themen 15
M Methoden mit Rückgabewert Java Basics - Anfänger-Themen 4
M Null-Rückgabewert von Methoden = sauberes programmieren? Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
B Rückgabewert boolean Java Basics - Anfänger-Themen 8
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
F Pascalsches Dreieck mit Rückgabewert Java Basics - Anfänger-Themen 2
D Dezimal zu Dual mit Rückgabewert Java Basics - Anfänger-Themen 39
Curtis_MC Methoden Rückgabewert von BiPredicate Java Basics - Anfänger-Themen 6
B Array als Rückgabewert in der Methode Java Basics - Anfänger-Themen 1
T Rückgabewert Problem Java Basics - Anfänger-Themen 2
A Methoden Rückgabewert Java Basics - Anfänger-Themen 6
I Referenz auf Klasse als Rückgabewert Java Basics - Anfänger-Themen 7
H Variablen Void und der Rückgabewert Java Basics - Anfänger-Themen 6
P Rückgabewert bestimmen Java Basics - Anfänger-Themen 17
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
D for-Schleife Rückgabewert Java Basics - Anfänger-Themen 6
C Rückgabewert von Kontruktoren Java Basics - Anfänger-Themen 15
S Methoden Bei Liste als Rückgabewert: IndexOutOfBoundsException Java Basics - Anfänger-Themen 1
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
O Was verursacht den Rückgabewert false bei der Methode ready() eines BufferedReaders Java Basics - Anfänger-Themen 9
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
S Rückgabewert null in Methode mit Thread Java Basics - Anfänger-Themen 2
M Anstatt 1 int Rückgabewert, mehrere Rückgaben mit Arraylist Java Basics - Anfänger-Themen 8
N Klassen constructor Rückgabewert Java Basics - Anfänger-Themen 10
C Methoden Rückgabewert von statischer Methode ignorieren Java Basics - Anfänger-Themen 8
MiMa Methode mit Rückgabewert Java Basics - Anfänger-Themen 2
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
T Variablen Rückgabewert aus einer Schleifen-Methode Java Basics - Anfänger-Themen 8
D Methode mit Rückgabewert Java Basics - Anfänger-Themen 5
K Rückgabewert einer Klassenmethode Java Basics - Anfänger-Themen 7
D Erste Schritte Als Rückgabewert Klasse Java Basics - Anfänger-Themen 5
D Rückgabewert Pixelgrabber Java Basics - Anfänger-Themen 3
S ArrayList und Rückgabewert Java Basics - Anfänger-Themen 2
T Methode - Rückgabewert Schreibweise Java Basics - Anfänger-Themen 6
S Interface Rückgabewert Java Basics - Anfänger-Themen 3
F if Anweisung mit Rückgabewert? Java Basics - Anfänger-Themen 4
I Rückgabewert von JSlider Java Basics - Anfänger-Themen 15
C Datentypen Rückgabewert von "new FileInputStream" Java Basics - Anfänger-Themen 4
S Datentypen String mit fester Länge (Rückgabewert einer Methode) Java Basics - Anfänger-Themen 2
O Rückgabewert mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 10
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
T Array als Rückgabewert einer Methode Java Basics - Anfänger-Themen 3
A Rückgabewert ändert sich? Java Basics - Anfänger-Themen 9
C Thread mit Rückgabewert? Java Basics - Anfänger-Themen 4
S Rückgabewert einer Instanzvariable Java Basics - Anfänger-Themen 2
K rückgabewert combobox Java Basics - Anfänger-Themen 15
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
C Null als Rückgabewert Java Basics - Anfänger-Themen 7
O String[] Array als Rückgabewert Java Basics - Anfänger-Themen 7
G setValueAt Rückgabewert verarbeiten? Java Basics - Anfänger-Themen 12
P Methode mit 2 unterschiedlichem Rückgabewert Java Basics - Anfänger-Themen 10
L Prozess rückgabewert? Java Basics - Anfänger-Themen 5
I "Rückgabewert" von EditorFenster Java Basics - Anfänger-Themen 6
A ActionPerformed Methode ohne Rückgabewert Java Basics - Anfänger-Themen 12
G Rückgabewert bei JInternalFrame ? Java Basics - Anfänger-Themen 2
M Rückgabewert Java Basics - Anfänger-Themen 4
L Rückgabewert Java Basics - Anfänger-Themen 7
K Frage zu Rückgabewert List und ArrayList Java Basics - Anfänger-Themen 6
D Methode aufrufen funktioniert nicht ganz - Rückgabewert Bool Java Basics - Anfänger-Themen 12
M Rückgabewert einer Methode Java Basics - Anfänger-Themen 6
P Array als Rückgabewert Java Basics - Anfänger-Themen 4
halla Array an Methode übergeben / Array als Rückgabewert Java Basics - Anfänger-Themen 2
L Rückgabewert in Konstruktor? Java Basics - Anfänger-Themen 4
R Problem mit Rückgabewert Java Basics - Anfänger-Themen 5
D Rückgabewert einer Methode Java Basics - Anfänger-Themen 25
M JFileChooser Rückgabewert Java Basics - Anfänger-Themen 2
Niki_Tesla Rückgabewert Java Basics - Anfänger-Themen 2
A Hashtable als Rückgabewert Java Basics - Anfänger-Themen 3
A Methode mit Rückgabewert Java Basics - Anfänger-Themen 3
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben