Werden Arrays in Java als Wert oder als Referenz übergeben?
Java unterscheidet sich von anderen Programmiersprachen in seinem Ansatz zur Objektbehandlung. Im Gegensatz zu primitiven Typen wie Ganzzahlen oder Zeichen verhalten sich Arrays in Java eindeutig. Um ihr Verhalten zu verstehen, ist es wichtig, zwischen der Übergabe von Objekten nach Wert und nach Referenz zu unterscheiden.
Übergabe nach Wert oder Referenz in Java
In Java alles wird als Wert übergeben. Bei der Übergabe eines Arrays ist die Sache jedoch etwas nuancierter. Arrays sind keine Grundelemente, aber auch keine Objekte im herkömmlichen Sinne. Stattdessen handelt es sich im Wesentlichen um Verweise auf ein Objekt auf dem Heap.
Wenn ein Array an eine Methode übergeben wird, wird der Verweis auf das Array als Wert übergeben. Dies bedeutet, dass eine Kopie der Referenz übergeben wird, nicht das eigentliche Array selbst.
Auswirkungen auf das Array-Verhalten
Da die Referenz auf das Array als Wert übergeben wird, Alle über diesen Verweis am Inhalt des Arrays vorgenommenen Änderungen wirken sich auf das ursprüngliche Array aus. Wenn beispielsweise der Wert eines Array-Elements innerhalb einer Methode geändert wird, wird die Änderung im ursprünglichen Array widergespiegelt.
Wenn Sie jedoch die Referenz selbst so ändern, dass sie auf ein anderes Array verweist, wird die ursprüngliche Referenz in der Methode nicht geändert Verfahren. Mit anderen Worten, der Verweis, der an die Methode übergeben wurde, bleibt derselbe, auch wenn das Array, auf das er verweist, geändert wird.
Codebeispiel zur Verdeutlichung
Zur Veranschaulichung Betrachten Sie für dieses Konzept den folgenden Code:
public static void changeContent(int[] arr) { // If we change the content of arr. arr[0] = 10; // Will change the content of array in main() } public static void changeRef(int[] arr) { // If we change the reference arr = new int[2]; // Will not change the array in main() arr[0] = 15; } public static void main(String[] args) { int[] arr = new int[2]; arr[0] = 4; arr[1] = 5; changeContent(arr); System.out.println(arr[0]); // Will print 10.. changeRef(arr); System.out.println(arr[0]); // Will still print 10.. // Change the reference doesn't reflect change here.. }
In diesem Beispiel ändert die Methode „changeContent“ den Inhalt des Arrays, indem sie das erste Element auf 10 setzt Änderungen werden im ursprünglichen Array in main widergespiegelt. Dies zeigt, dass sich die Änderung des Inhalts eines als Referenz übergebenen Arrays auf das ursprüngliche Array auswirkt.
Andererseits weist die Methode „changeRef“ dem Referenz-Arr ein neues Array zu. Diese Änderung spiegelt sich nicht im ursprünglichen Array in main wider, da die Referenz selbst nicht als Wert übergeben wird.
Das obige ist der detaillierte Inhalt vonWird ein Array in Java nach Wert oder nach Referenz übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!