Rumah > Java > javaTutorial > teks badan

Mengapa j = j memberikan 0 kepada j di Jawa?

DDD
Lepaskan: 2024-10-27 03:26:29
asal
542 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!

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