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 implementierst du Instanzmethoden in deine Java Klasse

Java Instanzmethoden

In einen der letzten Beiträge habe ich dir gezeigt, wie du eine Klasse anlegen kannst. Ich habe die Klasse „Mensch“ oder „Human“ angelegt und wir haben die erste Instanzvariable implementiert. Dein Code sollte jetzt so aussehen: public class Human { int size=156;//size in centimeter } In diesem Beitrag werde ich dir zeigen, wie du Java […]

So kannst du Java Konstruktoren anlegen und überladen

Java Konstruktoren

Der Name sagt es schon. Java Konstruktoren konstruieren oder bauen Java Objekte. Und diese Objekte baut der Konstruktor auf Vorlage der entsprechenden Java Klasse. In diesem Beitrag zeige ich dir natürlich verschiedene Ansätze wie du den Konstruktor einsetzt. Ich zeige dir dies Schritt für Schritt. Dabei zeige ich dir auch verschiedene Dinge, welche nicht funktionieren. […]

Java Vererbung:
Die 3 Schablonen für deine Java Objekte

Java Vererbung Beispiel

Im letzten Beitrag habe ich dir das Java Vererbung Konzept an einem Beispiel vorgestellt. In dem Beispiel-Rollenspiel gab es Klassen zu Helden und Superhelden. Ich habe dir die Vererbungshierarchien theoretisch erläutert. Jetzt geht es ans Praktische. In diesen Beitrag lernst du: Wie du bestehende Java Klassen erweiterst Wie du Objekte aus den erweiterten Klassen erstellen […]

Die vier verschiedenen Zahlensysteme in der Java Programmierung

Java Zahlensysteme

Java Zahlensysteme – Was soll das? In sämtlichen Programmiersprachen werden Zahlen in Variablen abgespeichert. Wenn du dir die einzelnen primitiven Datentypen in Java einmal anschaust – wirst du feststellen – dass die Masse der Datentypen Zahlen annehmen und speichern können. Zahlen und die Mathematik dahinter spielen in der Programmierung eine sehr große Rolle. Ganz am […]

Java Objekte leben auf dem Heap

Java-Objekte-Heap

Java hat eine interne Speicherverwaltung. Eigentlich ist es nicht nur eine. Es sind mehrere.   Uns interessieren nur zwei. Methoden und lokale Variablen werden auf dem Stack verwaltet. Und die Speicherverwaltung für Java Objekte und den Instanzvariablen findet auf dem Heap statt.   Ja wieso braucht Java eigentlich zwei Speichersysteme?   Es ist ganz einfach. […]

So kannst du zweidimensionale Java Arrays anlegen und nutzen

Java Arrays zweidimensional

Eines der bedeutendsten Instrumente in der Mathematik ist das Koordinatensystem. Die gedankliche Grundlage dieses Werkzeuges lieferte der französische Naturwissenschaftler und Philosoph Rene Descartes. Man muss sich einmal verdeutlichen, was dies für die damalige Zeit bedeutete. Bisher wurden mathematische Probleme lediglich durch Berechnungen gelöst. Denke an geometrische Figuren, wie Dreiecke und Vierecke. Der Umfang wurde lediglich […]

So kannst du Instanzen in Java Klassen zählen

Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.

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 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 […]

Java lernen – 10 nützliche Tipps für Java Anfänger

Java Lernen Anfänger

Wenn du die Programmiersprache Java lernen möchtest, bist du hier prinzipiell erst einmal richtig. Und wenn du es wirklich ernst meinst und in die Java Programmierung einsteigen möchtest, solltest du auch meinen kostenlosen Java Kurs beanspruchen. Wenn du dabei bist, bekommst du: Eine Lektion pro Woche zu den Basics. Hier geht es um die ersten […]