Rumah > Java > javaTutorial > Mengapa j = j memberikan 0 kepada j di Jawa?

Mengapa j = j memberikan 0 kepada j di Jawa?

DDD
Lepaskan: 2024-10-27 03:26:29
asal
613 orang telah melayarinya

Why does j = j   assign 0 to j in Java?

Siarkan Operator Peningkatan dalam Java

Soalan:

Dalam coretan kod di bawah, mengapa adakah operator kenaikan pos j memberikan 0 kepada j?

public class Test {
    public static void main(String[] args) {
        int j = 0;
        for (int i = 0; i < 100; i++) {
            j = j++;
        }
        System.out.println(j); // prints 0
    }
}
Salin selepas log masuk

Menurut pengarang buku "Java Puzzlers," pernyataan j = j adalah serupa dengan urutan berikut:

temp = j;
j = j + 1;
j = temp;
Salin selepas log masuk

Walau bagaimanapun, pernyataan a = b memberikan b nilai 1, yang bercanggah dengan kelakuan yang dijangkakan bagi pengendali kenaikan jawatan.

Jawapan:

Kesilapan dalam hujahnya terletak pada menggunakan peraturan kenaikan kemudian tetapkan kepada a = b tetapi bukan kepada j = j . Urutan operasi yang betul untuk a = b ialah:

temp = b;
b = b + 1; // increment
a = temp; // assign
Salin selepas log masuk

Menggunakan peraturan yang sama kepada j = j , kita dapat:

j = j;
j = j + 1; // increment
Salin selepas log masuk

Oleh kerana nilai awal j ialah 0, pengendali kenaikan pos mengembalikan 0 kerana nilai j sebelum kenaikan digunakan dalam ungkapan.

Oleh itu, nilai akhir j ialah 0 kerana penyataan tugasan menilai kepada j = 0.

Atas ialah kandungan terperinci Mengapa j = j memberikan 0 kepada j di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan