Heim > Java > javaLernprogramm > Wird ein Array in Java nach Wert oder nach Referenz übergeben?

Wird ein Array in Java nach Wert oder nach Referenz übergeben?

Patricia Arquette
Freigeben: 2024-12-31 04:34:08
Original
541 Leute haben es durchsucht

Is Array Passing in Java by Value or by Reference?

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..
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage