[Java]Such etwas wie Globale Variablen

MasterOfWar

Lt. Commander
Registriert
Jan. 2009
Beiträge
1.397
Abend,
ich habe eine Funktion die folgende Form hat :
PHP:
public static int[][] function(String[] input,int[][] koord){

[CODE]

return koord;
}
im Laufe des Funktionsablaufes werden jedoch 2 Variablen (Integer) verändert. Die Werte dieser Variablen brauch ich jedoch später noch. Gibt es eine Möglichkeit die Global zu speichern, sodass ich sie von überall verändern und auslesen kann ?
 
Definiere die Variable doch in der Klasse, und nicht in der Methode.
 
Also einfach mit public static int y=150;
hatte nur Angst, dass Sie dann nicht mehr veränderbar sind..
 
Entweder machst du die koords static oder eine Klasse speziell für Datenhaltung, wenn du mehrere Datenelemente immer wieder im Zugriff brauchst;
 
Hey,
also ich nutze immer folgenden Aufbau. Aber dies ist nach Lust/Laune.

Code:
public TestKlasse(){
        // final ist eigentlich nicht mehr wirklich wichtig, da es über die getter geht
	private final int variableA = 0;
	private final int variableB = 0;
	
	// gibt den Wert von variableA zurück
	public int getVariableA(){
		return variableA;
	}

	// gibt den Wert von variableB zurück	
	public int getVariableB(){
		return variableB;
	}
}

die get-Methoden kann man auch dann in Methoden der Klasse aufrufen.
 
@ Konrad Feuer: Schön zu wissen. Ein weiterer Grund wieso ich Java nicht mag. ;)
 
Yuuri schrieb:
@ Konrad Feuer: Schön zu wissen. Ein weiterer Grund wieso ich Java nicht mag. ;)

Warum das denn? Hat schon einen Grund.

DasBoeseLebt schrieb:
final und const sind nicht das gleiche, deshalb ist es eben nicht Jacke wie Hose
und auch deshalb heißt es bewusst in Java nicht const.

Final is not constant

Was aber eher für Java spricht. Final schützt die Referenz und fertig, wäre in einer OO-Sprache auch doof, wenn man auf dem referenzierten Objekt keine Änderungen mehr machen könnte. Falls man das aber so haben wollte, dann könnte man das Objekt immer noch entsprechend gestalten. Also kann man hier feingranularer sein.

Stelle dir vor, du willst mit final einen DatenbankContext schützen. Deshalb möchte man ja trotzdem immer noch von außen seinen Zustand verändern können (connection aufbauen und dabei eventuell Parameter übergeben, die im Objekt persistiert werden).

Achja, im Falle des Anliegens vom TS ist es zufällig doch das gleiche, er bezieht sich ja auf primitive Typen. Selbst wenn er tatsächlich die Integer Klasse (den Wrapper für int) meinen würde, würde es immer noch die Charakteristik eines "const" haben da Integer mutable ist.
 
Zuletzt bearbeitet:
Mein Post bezüglich final und const war auch nur dazu gedacht, um die allgemeine Behauptung, dass sie das gleiche tun, zu widerlegen. ;)

Was man durchaus im Hinterkopf haben sollte, dass es eben nicht so ist - nicht mehr und nicht weniger.
 
carom schrieb:
Was aber eher für Java spricht. Final schützt die Referenz und fertig, wäre in einer OO-Sprache auch doof, wenn man auf dem referenzierten Objekt keine Änderungen mehr machen könnte.

Man kann doch aber in C++ genau so const-Referenzen auf ein Objekt haben, das in sich selbst nicht const ist.

Code:
int main()
{
	struct Bla
	{
		int a;
	};

	Bla b = {};
	const Bla& const_ref_to_b = b;

	b.a = 4; // ok
	const_ref_to_b.a = 76; // MÖHP MÖHP ... geht nicht
}
 
Zuletzt bearbeitet:
@dasBoeseLebt: klar, guter Punkt
@antred: kenne mich wenig aus in c++, habe nur den Link oben gelesen, wenn dem so ist dann ok :)
 
Zurück
Oben