Referenz (Pointer, Zeiger) in Java

82kolu

Mitglied
Hallo Leute,
ich komm nemme weiter.
in C++ kann man einfach mit * oder & arbeiten aber wie macht man das in Java`?
alles in einem Package!

Codebeispiel:
Code:
Klasse Autobahn!
boolean strasse = true;
public static void getAuto(boolean befahrbar) {
		befahrbar=strasse;
}
Code:
Klasse Auto!
private void kannGefahrenWerden() {
		// TODO Auto-generated method stub
		Autobahn.getAuto(befahrbar);
//befahrbar wird nie verändert. Warum weiss ich aber wie kann ichs verändern?
}

Danke schon mal :rtfm:
 

82kolu

Mitglied
Hey,
vorab danke.
Aber das ist nicht wonach ich suche.
wenn ich beispielsweise 5 boolean ändern möchte dann müsste ich ja 5 methoden schreiben
 

Gucky

Top Contributor
Genau das haben Getter und Setter an sich, dass nur ein Wert geändert oder zurückgegeben wird. Aber natürlich kannst du auch Methoden, wie
Java:
public void setter(boolean paramBool1, boolean paramBool2, boolean paramBool3, boolean paramBool4, boolean paramBool5){
   //doSomeSetterStuff
}
schreiben. Ob das Sinn macht steht auf einem anderen Blatt.
 
Zuletzt bearbeitet:

82kolu

Mitglied
Hey, jo das funktioniert wenn man in der gleichen Klasse hantiert.
Sobald man aber klassenübergreifend arbeitet ist es so nicht mehr möglich.
siehe mein Codbeispiel
 

Gucky

Top Contributor
Doch das funktioniert. Dein Beispiel ist ein bisschen wirr, weshalb ich es nicht so ganz verstehe.
Wenn du JFrame#setWidth(200); aufrufst, dann wird im JFrame Objekt, auf das setWidth aufgerufen wird eine Variable geändert. Und wenn du int i = 200; JFrame#setWidth(i); aufrufst gibt es dasselbe Resultat.


Wenn du JFrame#getWidth() aufrufst wird ein int zurückgegeben.
Willst du fünf Werte auf einmal zurückgeben, musst du mit einem Array und einer Dokumentation arbeiten (sonst weißt du bald nicht mehr, was in welchem Feld steht) oder mit einer Containerklasse, ähnlich einem Struct.
 

82kolu

Mitglied
Kannst du mir n Beispiel für boolean-Werte machen das ich des verstehe.
Also ich habs so gemacht und so gehts net.
Code:
public void setter(boolean paramBool1, boolean paramBool2, boolean paramBool3, boolean paramBool4, boolean paramBool5){
   paramBool1 = true;
    paramBool2 = ....
}
Code:
boolean  paramBool1 = false;
Klasse.setter(paramBool1, paramBool2, paramBool3, paramBool4, paramBool5);
bei mir ist nach dem Aufruf der setter Methode der Parameter paramBool1 = false;
und ich weiss auch warum.
In C++ ist das genauso, nur wenn man bei der Methode ein *oder ein & macht dann wird die variable verändert

Danke
 

Gucky

Top Contributor
Ach so meinst du das.
Das ist in Java nicht möglich. Hier gibt es kein Call-By-Reference sondern nur Call-By-Value. Wird eine Methode mit Parametern aufgerufen, so wird eine Kopie der Variablen erstellt und diese an die Methode übergeben. Der Ursprungswert kann nicht verändert werden.

Du müsstest mit Gettern arbeiten, die Werte zurückgeben. Also auto.getFahrbar().
Eine Alternative wäre, dass du ein Array geeigneter Länge übergibst und dort die Werte hineinschreibst. Das ist aber sehr unschön.
 

82kolu

Mitglied
Oh... okay. Ja das wist wirklich sehr unschön....


Trotzdem vielen Dank!!
Ich sitz schon seit 6 Stunden dran und denk mir das muss doch gehen....

Danke für die Zeit
 

consider

Mitglied
Aber als kleine Hilfe (so wird es vielleicht etwas schöner): Es wird zwar eine <<Kopie>> der Referenz übergeben, diese verweist aber logischerweise noch auf selbe Objekt. Die Referenz wird als quasi by Value übergeben. Es läuft also immer per by value, nuir kann man dadurch, dass bei eigenen Datentypen die Referenz by Value übergeben wird, noch etwas machen.

Vorteil: Da auf selbe Objekt referenziert wird, kann man dieses ändern, als wär by Reference übergeben worden.
Nachteil: Es bleibt by Value. Du kannst nicht auf ein neues Objekt referenzieren, da nur die Kopie der Referenz überschrieben wird.

Daher wäre es für dein Vorhaben eventuell hilfreich, keine primitiven sondern eigene Datentypen zu verwenden. (und boolean eventuell zu kapseln)

Beispiel:

Java:
package reforval;

public class Test {
	private int myValue;

	public Test(int i) {
		setMyValue(i);
	}

	public int getMyValue() {
		return myValue;
	}

	public void setMyValue(int myValue) {
		this.myValue = myValue;
	}

	@Override
	public String toString() {
		return "Test [myValue=" + myValue + "]";
	}
	
}

Ein Testobjekt.

Java:
package reforval;

public class RefernceOrValue {

	public static void main(String[] args) {
		Test test = new Test(5);
		change(test);
		System.out.println(test);

	}

	private static void change(Test t) {
		t.setMyValue(10);
	}

}

Ergebnis: 10 Es wird zwar die Referenz per Value übergeben, also eine Kopie erstellt, wleche jedoch noch auf selbe Objekt zeigt.
Das verhält sich also erst mal grob wie bei "per Reference". Es bleibt jedoch bei by Value:

Java:
package reforval;

public class RefernceOrValue {

	public static void main(String[] args) {
		Test test = new Test(5);
		change(test);
		System.out.println(test);

	}

	private static void change(Test t) {
		t = new Test(10);
	}

}

Ergebnis 5: Es wird nur die lokale Kopie der Referenz neu belegt. Die äußere Kopie bleibt davon unberührt.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Pointer / Referenz - Theorie Java Basics - Anfänger-Themen 3
F Referenz Pointer oder doch nochmal neu suchen ? Java Basics - Anfänger-Themen 2
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
C Kopie oder Referenz ? Java Basics - Anfänger-Themen 5
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
D Uebergabe per Referenz Java Basics - Anfänger-Themen 2
O Referenz - toString Java Basics - Anfänger-Themen 9
S This-Referenz Java Basics - Anfänger-Themen 6
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
I Referenz auf Klasse als Rückgabewert Java Basics - Anfänger-Themen 7
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
J Referenz und Instanzierung Java Basics - Anfänger-Themen 25
I Erste Schritte Referenz zum Knoten davor, in einer Liste Java Basics - Anfänger-Themen 4
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
O This-Referenz als Returnwert einer Methode? Java Basics - Anfänger-Themen 13
O This Referenz Java Basics - Anfänger-Themen 3
A top referenz bei queues Java Basics - Anfänger-Themen 1
J Rückgabe als Wert, keine Referenz Java Basics - Anfänger-Themen 3
Q Parameterübergabe - Objekt - Referenz Java Basics - Anfänger-Themen 5
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
V Frage zu Polymorphismus: Objekt der Subklasse in Referenz der Oberklasse Java Basics - Anfänger-Themen 4
T Aufgerufene Methode Inhalt der übergebenen Referenz Java Basics - Anfänger-Themen 5
B Referenz in Java Java Basics - Anfänger-Themen 5
C Referenz auf ein Objekt kopieren! Java Basics - Anfänger-Themen 2
J Methoden Referenz und Speicherplatz für Objekte reservieren Java Basics - Anfänger-Themen 2
M Wie komm ich an die Referenz eines Oberflächenelements Java Basics - Anfänger-Themen 2
A Klassenvariablen Referenz auf ein Objekt Java Basics - Anfänger-Themen 18
M Referenz Frage Java Basics - Anfänger-Themen 12
K OOP Probleme mit Objekt-Referenz in Methode Java Basics - Anfänger-Themen 6
W Die leidige Referenz-Frage Java Basics - Anfänger-Themen 9
B Arraycopy kopiert nur die Referenz?! Java Basics - Anfänger-Themen 3
S Speicheradresse auf die eine Referenz zeigt ausgeben Java Basics - Anfänger-Themen 12
E Compiler-Fehler kann Objekt-Referenz nicht erstellen Java Basics - Anfänger-Themen 3
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
Blackskyliner Referenz ähnlicher Zugriff, aber wie? Java Basics - Anfänger-Themen 4
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
C Referenz einer bereits instanziierten Klasse während des Programmablaufs Java Basics - Anfänger-Themen 16
H Objekt holen per Referenz als String. Java Basics - Anfänger-Themen 4
T Referenz einer Variable übergeben Java Basics - Anfänger-Themen 3
S Datentypen Objekt Integer Referenz Java Basics - Anfänger-Themen 5
B Referenz auf Referenz Java Basics - Anfänger-Themen 3
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
H ArrayList Zugriffe per Referenz verkürzen? Java Basics - Anfänger-Themen 9
B Static Referenz auf Non-static Feld Java Basics - Anfänger-Themen 6
Luk10 Sinn von Instanzierung ohne Referenz Java Basics - Anfänger-Themen 7
C0FFEE Referenz auf Methode übergeben Java Basics - Anfänger-Themen 2
aze NullpointerException :Null Referenz anzeigen lassen Java Basics - Anfänger-Themen 2
D Fehlen einer Referenz auf Objekt Java Basics - Anfänger-Themen 14
N this.referenz erläuterung Java Basics - Anfänger-Themen 2
K Attribut als Referenz auf Objekt Java Basics - Anfänger-Themen 8
K 3 Threads bearbeiten 1 Referenz: Ich versteh's nicht... Java Basics - Anfänger-Themen 2
P OOP-Theorie-Frage: Referenz auf Objekt Java Basics - Anfänger-Themen 27
D Referenz auf Objekt Java Basics - Anfänger-Themen 5
P Methode BigInteger-Array übergeben als Referenz Java Basics - Anfänger-Themen 6
U null-referenz Java Basics - Anfänger-Themen 26
deetee Problem mit Referenz auf Map Java Basics - Anfänger-Themen 5
G Interface referenz probleme Java Basics - Anfänger-Themen 10
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
D enum und Referenz der umgebenden Klasse Java Basics - Anfänger-Themen 2
C Referenz Java Basics - Anfänger-Themen 11
A ClassNotFoundException: Referenz nicht aktualisiert Java Basics - Anfänger-Themen 2
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
T Die this Referenz Java Basics - Anfänger-Themen 21
C Größe einer Referenz ? Java Basics - Anfänger-Themen 16
D Array reverse Problem, da Referenz nicht auf tmpArray zeigt Java Basics - Anfänger-Themen 4
G primitive Datentypen als Referenz an eine Methode übergeben Java Basics - Anfänger-Themen 2
G Wie Referenz auf Objekt übergebn Java Basics - Anfänger-Themen 8
P Objekte als Attribut: Referenz oder Kopie? Java Basics - Anfänger-Themen 3
G Parameterübergabe als Referenz bzw. als Kopie Java Basics - Anfänger-Themen 4
S Prüfen, ob null Referenz? Java Basics - Anfänger-Themen 2
G Referenz-Problem Java Basics - Anfänger-Themen 3
J Referenz problem Java Basics - Anfänger-Themen 12
D tiefergehende Java-Referenz Java Basics - Anfänger-Themen 3
M Referenz auf Membervariable Java Basics - Anfänger-Themen 5
G Objektübergabe als Referenz bei RMI Java Basics - Anfänger-Themen 2
J referenz auf noch nicht erzeugte objekte? Java Basics - Anfänger-Themen 2
G Rückgabe einer Kopie bzw. Referenz Java Basics - Anfänger-Themen 22
M Parameter als Referenz übergeben Java Basics - Anfänger-Themen 5
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
K Referenz auf Funktion Java Basics - Anfänger-Themen 6
J Referenz auf ein Objekt Java Basics - Anfänger-Themen 2
javasdann Referenz als String ausgeben. Java Basics - Anfänger-Themen 10
B Was ist eine Referenz? Java Basics - Anfänger-Themen 6
Z Zugriff auf Attribute nach Zuweisung einer Referenz Java Basics - Anfänger-Themen 8
L Referenz vs. Kopie Java Basics - Anfänger-Themen 2
G Zeiger/Referenz auf int- Variable Java Basics - Anfänger-Themen 5
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Detlef Bosau nichtstatische Innere Klasse, this Pointer. Java Basics - Anfänger-Themen 47
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
Orkanson Null Pointer Expception Java Basics - Anfänger-Themen 3
J Pointer Java Basics - Anfänger-Themen 11
C Null Pointer Exception Java Basics - Anfänger-Themen 10
G Null Pointer Exception Java Basics - Anfänger-Themen 4
D OOP Warum bekomme ich eine Null-Pointer Exception!!? :( Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben