2010-01-07 45 views
9

可能重複:
Why this is not compiling in Java?爲什麼你不能在一個沒有大括號的循環中爲int賦一個int?

在java中,花括號是可選的一個線環,但我發現它是不允許的情況下。例如,下面的代碼:

for(int i = 0; i < 10; i++) 
    Integer a = i; 

不會編譯,但如果添加大括號,就像這樣:

for(int i = 0; i < 10; i++){ 
    Integer a = i; 
} 

會的。爲什麼不能編譯這個代碼?

+2

有趣的是,幾乎一模一樣的問題殺出一個星期前。這是一些面試問題嗎?編輯:發現它http://stackoverflow.com/questions/1974641/why-this-is-not-compiling-in-java – BalusC 2010-01-07 23:39:15

+0

這很有趣。什麼版本的Java?我的猜測是這是由於拳擊。但有點奇怪。 – 2010-01-07 23:39:19

+3

@silky:這與拳擊無關。 (特別是通過很長的路要走早拳擊,如果'了'是'型太int'的會發生。)這是一個語句表達,如果沒有記錯... – 2010-01-07 23:40:26

回答

11

因爲在單個行語句中聲明一個新變量是沒有意義的,因爲它立即超出範圍。

如果您在Java中查看statement的定義,它不包含LocalVariableDeclarationStatement,而block則包含。

-2

我不知道是否有什麼關係的事實,下面的語句是複合?

for(int i = 0; i < 10; i++) 
    Integer a; 
    a = i; 
8

如果沒有大括號,你不能把一個變量聲明。 (變量將是無用的)

specification。 (A LocalVariableDeclarationStatement只能在內直接發生。)

相關問題