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

Mengapa j = j memberikan 0 kepada j di Jawa?

DDD
DDDasal
2024-10-27 03:26:29462semak imbas

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
    }
}

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

temp = j;
j = j + 1;
j = temp;

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

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

j = j;
j = j + 1; // increment

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:
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