java - for循环造对象,造了很多重复的s对象,为什么不报错?
大家讲道理
大家讲道理 2017-04-18 09:51:15
0
7
547

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(7)
迷茫
// 循环执行 10 次,会产生 10个 {} 代码块,互不冲突
for (int i = 0;i < 10;i ++) { // ↓
    int s = i; // 中间这一部分是 s 的作用域,出了作用域 s 是不存在的
} // ↑
刘奇
  1. Pertama sekali, s adalah jenis int, yang merupakan jenis asas, bukan jenis Objek, jadi tidak ada perkara seperti "mencipta banyak objek pendua s"

  2. Apa yang dibuat di sini ialah pembolehubah jenis int. Pembolehubah ini disimpan pada tindanan

  3. Walaupun anda menetapkan bilangan gelung kepada Integer.MAX_VALUE, tiada ralat akan dilaporkan Sebab khusus tidak diketahui, tetapi pengkompil akan mengoptimumkan kod supaya kawasan memori yang sama digunakan setiap kali bukannya Buka kawasan ingatan baharu setiap kali

小葫芦

Anda boleh mencuba Integer haha

阿神

1. Perkara pertama yang anda perlu fahami ialah tiada objek bernama s di sini. S dan i dalam kod hanyalah rujukan kepada objek, yang setara dengan penunjuk dalam bahasa C ruang.
2. Setiap kali anda gelung dalam gelung for, anda mengisytiharkan rujukan dengan nama yang sama Kemudian pengkompil boleh membezakan rujukan ini dengan nama yang sama, jadi tidak kira berapa kali anda gelung, anda sebenarnya hanya mempunyai satu. rujukan bernama 's'. Dan ia dimulakan dalam gelung pertama untuk, dan setiap gelung berikutnya memberikan nilai kepada rujukan ini dengan nama yang sama.
3. Jika anda ingin melihat hasil cetakan, masukkan system.out ke dalam domain pembolehubah tempatan yang sah.

Peter_Zhu

1. Kod ini tidak mencipta objek Int ialah jenis data asas, bukan objek.
2. Kod ini akan dioptimumkan oleh pengkompil, dan saya rasa hasilnya mungkin dalam bentuk int s = 9; Anda boleh javap untuk melihat

刘奇

Kerana anda menggunakan pengkompil java.

刘奇

Dari mana datangnya int? Ia terus mengubah nilai tindanan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan