Rumah > Java > javaTutorial > Mengapa Menetapkan Pembolehubah Lelaran Tidak Mengubah Tatasusunan Asal dalam Java Untuk-Setiap Gelung?

Mengapa Menetapkan Pembolehubah Lelaran Tidak Mengubah Tatasusunan Asal dalam Java Untuk-Setiap Gelung?

Susan Sarandon
Lepaskan: 2024-12-29 08:59:10
asal
966 orang telah melayarinya

Why Doesn't Assigning to the Iteration Variable Change the Original Array in a Java For-Each Loop?

Mengapa Tugasan Pembolehubah Lelaran Gagal

Dalam gelung foreach Java, salah tanggapan lazim bahawa memberikan pembolehubah lelaran mengubah suai data asas. Pertimbangkan kod berikut:

String boss = "boss";
char[] array = boss.toCharArray();

for (char c : array) {
    if (c == 'o') {
        c = 'a';
    }
}
System.out.println(new String(array)); // Prints "boss", not "bass"
Salin selepas log masuk

Tanpa diduga, output kekal sebagai "bos" walaupun terdapat perubahan ketara 'o' kepada 'a' dalam gelung. Tingkah laku ini berpunca daripada sifat gelung foreach.

Apabila menggunakan foreach, pembolehubah lelaran ialah salinan elemen tatasusunan. Menetapkan kepada pembolehubah lelaran hanya mengubah suai salinan, bukan elemen tatasusunan itu sendiri. Untuk mengemas kini tatasusunan asas, pengubahsuaian eksplisit diperlukan:

for (int i = 0; i < array.length; i++) {
    if (array[i] == 'o') {
        array[i] = 'a';
    }
}
Salin selepas log masuk

Kod yang disemak ini diberikan kepada elemen tatasusunan sebenar, memastikan pengubahsuaian 'o' kepada 'a' yang dimaksudkan.

Dalam ringkasan, foreach gelung memberikan kemudahan untuk lelaran ke atas koleksi, tetapi tugasan kepada pembolehubah lelaran hanya mempengaruhi salinan tempatan. Untuk pengubahsuaian berterusan, pengindeksan tatasusunan eksplisit diperlukan.

Atas ialah kandungan terperinci Mengapa Menetapkan Pembolehubah Lelaran Tidak Mengubah Tatasusunan Asal dalam Java Untuk-Setiap Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan