Skip to main content

Achte bei Java Methoden stets auf die Wertübergabe

Ich lege gleich los….

Schau dir diesen Code einmal an.

Welche Zahl wird wohl auf der Bildschirmanzeige zurückgegeben?


public class MethodenWertUebergabe {

	static int verdoppele (int i){
		i=i*2;
		return i;
	}
	
	public static void main(String[] args) {
		int i = 2;
		verdoppele(i);
		System.out.println(i);
	}
}


Na hast du es ausprobiert?

Es wird die Zahl zwei zurückgegeben.
Und das obwohl der Parameter ganz deutlich der Java Methode übergeben wurde.

Na was ist denn das los?

Lass uns die Methode um eine Bildschirmausgabe erweitern.
Diese Bildschirmausgabe soll den Wert innerhalb der Methode zurückgeben.


public class MethodenWertUebergabe {

	static int verdoppele (int i){
		i=i*2;
		System.out.println("Wert innerhalb der Methode: "+i);
		return i;
	}
	
	public static void main(String[] args) {
		int i = 2;
		verdoppele(i);
		System.out.println("Wert außerhalb der Methode: "+i);
	}
}

Wenn du jetzt das Java Programm startest, dann siehst du

  • Dass der Wert innerhalb der verdoppeln-Methode 4 ist.
  • Aber außerhalb dieser Methode ist er wieder zwei.

Und warum das so ist – Ja darum geht in diesem Beitrag.

In Java Methoden werden Werte lediglich als Kopie übergeben.

Das Prinzip heißt „call by value“ oder auch „call by copy“.

Das bedeutet, dass der Wert von „i“ aus der main-Methode kopiert wird.
Und diese Kopie wird dann in die verdoppele-Methode gesteckt.

In der „verdoppele-Methode“ wird dann die Kopie des Wertes „i“ verdoppelt.
Und außerhalb dieser Java Methode wird die Variable wieder zerstört.

Wir haben bereits im Java Kurs über lokale Variablen gesprochen.
Lokale Variablen existieren nur innerhalb der Methoden, in welchen sie übergeben werden.
Und dieses „i“, ist so eine lokale Variable.

Deutlich wird dies, wenn ich den Parameter nicht i nenne, sondern ganz anders.
Denn es ist lediglich Zufall oder böse Absicht meinerseits, dass die lokale Variable i hieß.

Ich nenne die Variable einfach mal um.
Und nenne diese jetzt „lokaleVariable“.


public class MethodenWertUebergabe {

	static int verdoppele (int lokaleVariable){ //lokale Variable in der Parameterliste
		lokaleVariable=lokaleVariable*2;
		System.out.println("Wert innerhalb der Methode: "+lokaleVariable);
		return lokaleVariable;
	}
	
	public static void main(String[] args) {
		int i = 2; //auch diese i ist eine lokale Variable
		verdoppele(i);
		System.out.println("Wert außerhalb der Methode: "+i);
	}
}

Ich glaube so wird besser deutlich, dass beide Variablen unterschiedlich sind.
Sie nehmen lediglich für eine sehr kurze Zeit den gleichen Wert an.

Und somit wird auch deutlich, dass Java Methoden, Werte nicht ohne Weiteres übergeben.

Ja was kannst du machen?

Die Wertrückgabe der Java Methoden kannst du in die Bildschirmanzeige einpflegen.

Du kannst die Rückgabewerte von Java Methoden in die Bildschirmausgabe einbinden.

Wichtig ist, dass die Java Methoden auch Rückgabewerte haben – Also keine void-Methoden.
In meinem Fall wurde Integer als Rückgabewert vereinbart.

Also los..


public class MethodenWertUebergabe {

	static int verdoppele (int lokaleVariable){
		lokaleVariable=lokaleVariable*2;
		System.out.println("Wert innerhalb der Methode: "+lokaleVariable);
		return lokaleVariable;
	}
	
	public static void main(String[] args) {
        int i = 2;
		System.out.println("Wert außerhalb der Methode: "+verdoppele(i));//Rückgabe direkt in der Anweisung
	}
}

Du kannst aber auch die Rückgabewerte anderen Java Methoden übergeben.

Ich verdoppele den Wert nochmal.

Ich implementiere somit eine weitere Methode, namens „verdoppeleNochmal“.
Und diese Methode ruft, im Methodenrumpf, die erste Methode (verdoppele) auf und übergibt dieser den Wert.


public class MethodenWertUebergabe {

	static int verdoppele (int lokaleVariable){
		lokaleVariable=lokaleVariable*2;
		System.out.println("Wert verdoppelt: "+lokaleVariable);
		return lokaleVariable;
	}

	static int verdoppeleNochmal(int wert){
		wert=(verdoppele(wert))*2;
		System.out.println("Wert nochmal verdoppelt: "+wert);
		return wert;
	}
	
public static void main(String[] args) {
		int i=2;
		System.out.println("Wert außerhalb der Methode: "+verdoppeleNochmal(i));//Bildschirmausgabe
	}
}

Und so sollte es laufen.

Zusammenfassung:

  • In Java Methoden werden Werte lediglich als Kopie übergeben.
  • Die Wertübergabe wird auch als „call by value“ bezeichnet.
  • Da es sich lediglich um Kopien handelt, existieren die kopierten Werte außerhalb der Java Methoden nicht.
  • Du kannst Methoden allerdings in anderen Java Methoden aufrufen.
    Die Rückgabewerte kannst du dann weiterverarbeiten.

Na wie sieht’s bei dir aus?
Hast du noch Fragen oder Anregungen zur Wertübergaben in Java Methoden?

Schreib mir doch einen Kommentar unter diesen Beitrag.


Ähnliche Beiträge

So legst du Utility Klassen in Java an

Java Utility Klassen

Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer für jedes Java Programm. Hier […]

Der Aufbau von Java Klassen

Java Klassen Aufbau

Jedes Java Programm besteht aus Java Klassen. Doch wie sind diese aufgebaut? Wie setzt sich die Struktur zusammen? Wo befinden sich Klassen hierarchisch? Was kommt in die Klassen rein und wie wird es integriert? Das sind die Fragen, welche ich in diesem Artikel beantworten werde. Doch bevor wir bei den Klassen ansetzen, müssen wir eine […]

So lassen sich Java Strings in char zerlegen

Java Strings zerlegen char

Java Strings sind Zeichenketten. Und diese Zeichenketten lassen sich aufsplitten und in ihre Einzelteile zerlegen. Ich möchte dir in diesem Beitrag Möglichkeiten vorstellen, wie du Strings in Character-Datentypen zerlegen, extrahieren und die Einzelteile in Arrays speichern kannst.

Das Java Vererbung Konzept in einem Rollenspiel

Java ist eine objektorientierte Programmiersprache. Und das bedeutet nicht nur, dass du Objekte einer Java Klasse erzeugen kannst. Es bedeutet auch, dass Java Klassen von anderen Klassen erben können. Wieso das Ganze? Stell dir einmal ein Rollenspiel vor. Wie würdest du ein Rollenspiel entwerfen? In einem Rollenspiel gibt es magische Gegenstände. Zauberringe, Zauberstäbe, welche bei […]

So nutzt du Methoden aus der Java String Klasse

Java Strings Methoden

In einen der letzten Beiträge haben wir darüber gesprochen, dass Java Strings – Objekte sind. Dass Strings in allen Programmen äußerst häufig vorkommen Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen. Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen. Und das bedeutet: Weniger Objekte – mehr Speicher Mehr Speicher – bessere […]

So kannst du deine Eclipse Oberfläche anpassen

Eclipse anpassen

In diesem Beitrag möchte ich dir zwei ganz nette Features von Eclipse vorstellen. Es geht um Views und um Perspektiven. Wie du schon weißt, besteht Eclipse aus einer grafischen Oberfläche. Und in dieser Oberfläche stehen dir verschiedene Views zur Verfügung. Was ist so ein View?

So kannst du mit dem StringTokenizer Java Strings zerlegen oder splitten

Java StringTokenizer Java Strings teilen zerlegen splitten

Java StringTokenizer – was ist das? Bevor ich diese Frage kläre, schiebe ich eine zweite Frage hinterher. Denn im Wort Tokenizer steckt das Wort Token. Also was ist ein Token? Hier die Definition zum Token: Ein Token ist eine bestimmte Aneinanderreihung von Zeichen. Man kann auch sagen, eine lexikalische Einheit. Das kann zum Beispiel eine […]

Java Methoden mit variabler Argumentenanzahl – VarArgs

Java Methoden mit variabler Argumentenanzahl VarArgs

Du kennst das noch. Kopfrechnen und zwar auf Zeit. So etwas ist das Standardprogramm in den Schulklassen 1 bis 5. Irgendwann, in Klasse 6 oder 7, kommt der Taschenrechner ins Spiel und Kopfrechnen ist aus dem Schulalltag gestrichen. Schade eigentlich. Dabei kann man diese Disziplin auch wunderbar in kleinen Spielen unterbringen. Ich erinnere mich noch: […]

So kannst du Eclipse installieren

Eclipse installieren

Das Schöne an Eclipse ist, es läuft auf sämtlichen Betriebssystemen. Eclipse wird einfach auf der Webseite des Herstellers herunter geladen und kann dann installiert werden. Dabei stehen dir verschiedene Versionen zur Verfügung.

So kannst du Java Methoden überladen

Java Methoden überladen

Im Mittelalter war es üblich, dass Könige oder Adlige Briefe durch ein Siegel verschlossen. Das Siegel hatte die Aufgabe den Inhalt des Briefes vor dem gewaltsamen Öffnen zu schützen. Außerdem hatte das Siegel die Aufgabe einen Eigentumsnachweis sicher zu stellen. Und jeder, welcher das Siegel des Königs sah, wusste: „Das königliche Siegel – Oh ein […]