Lose Folge von Blog-Artikeln zu technischen Themen:
Basisdatentypen in Java "per Referenz" übergeben
In Java werden grundsätzlich alle Parameter “per Value” übergeben. Die oft verbreitete Meinung, dass primitive Datentypen per Value, Objekte jedoch per Referenz übergeben werden, ist nicht korrekt; Richtig ist, dass die Referenz auf Objekte per Value übergeben wird:
- mit Object b; wird nicht ein Objekt definiert, sondern eine Referenz auf ein Objekt.
- wird nun eine Methode doSomething(b) aufgerufen, wird nicht das Objekt b übergeben, sondern die Referenz auf dieses Objekt, und zwar per Value.
Dies macht es unmöglich, einen primitiven Datentypen innerhalb einer Methode zu ändern, und zwar so, dass die Änderung auch im Kontext des Methodenaufrufs Gültigkeit hat.
Manchmal ist dies aber unumgänglich. Eine einfache Art, dies trotzdem zu bewerkstelligen ist, den primitiven Datentypen in einem Array zu kapseln – und dann die Referenz auf das Array zu übergeben:
int[] a = new int[1];
a[0] = 1;
add2(a);
// a[0] now = 3
...
void add2(int[] a) {
a[0] = a[0] + 2;
}
Weitere Informationen zum Thema findet man hier: