[語法] 區域變數跟全域變數都有相同變數情況

看板java作者 (阿浩)時間7年前 (2016/10/29 12:30), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
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

10/29 12:45, , 1F
兩者同名的話先找區域變數
10/29 12:45, 1F

10/29 12:46, , 2F
同名的時候你可以使用Test.x來指定是全域變數
10/29 12:46, 2F

10/29 12:53, , 3F
那個全域變數叫class field類別變數 其實也不是真的全域啦
10/29 12:53, 3F

10/29 12:55, , 4F
以你現在的code來看:
10/29 12:55, 4F

10/29 12:55, , 5F
使用 x 會輸出0
10/29 12:55, 5F

10/29 12:55, , 6F
使用 Test.x 會輸出1
10/29 12:55, 6F

10/29 13:56, , 7F
感謝~~P幣晚點奉上
10/29 13:56, 7F

10/29 14:06, , 8F
語言定義,scope。
10/29 14:06, 8F
文章代碼(AID): #1O52NoHC (java)