看板 java 關於我們 聯絡資訊
public class Test { static int x=1; static Test ref; public static void main(String[] args) { int x=0; System.out.println(ref); System.out.println(x); } } 請教一下,現在的X輸出會是0,因為方法內有X為0的變數 但是如果把他拿掉之後,輸出會找到X為1的變數 能否解釋一下邏輯,以及先後順序的概念 奉上100p,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.216.94 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1477715442.A.44C.html
kyleJ: 兩者同名的話先找區域變數 10/29 12:45
kyleJ: 同名的時候你可以使用Test.x來指定是全域變數 10/29 12:46
kyleJ: 那個全域變數叫class field類別變數 其實也不是真的全域啦 10/29 12:53
kyleJ: 以你現在的code來看: 10/29 12:55
kyleJ: 使用 x 會輸出0 10/29 12:55
kyleJ: 使用 Test.x 會輸出1 10/29 12:55
shehrevar: 感謝~~P幣晚點奉上 10/29 13:56
pttworld: 語言定義,scope。 10/29 14:06