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!