下面的代碼有什麼問題?初始化後可以初始化靜態變量嗎?
class test {
static int a;
a=10;
}
如果我像這樣寫(如上),我得到一個編譯時錯誤。
class test {
static int a=10;
a=4;
}
對於第二個,我沒有得到任何錯誤。
下面的代碼有什麼問題?初始化後可以初始化靜態變量嗎?
class test {
static int a;
a=10;
}
如果我像這樣寫(如上),我得到一個編譯時錯誤。
class test {
static int a=10;
a=4;
}
對於第二個,我沒有得到任何錯誤。
你的兩個例子都不應該編譯。
a=10;
是一個聲明,它不是直接在class declaration內有效。只能把直接類內部以下:
static int a;
),方法,嵌套類和接口);你需要把一個語句塊中,例如靜態初始化:
static int a;
static {
a = 10;
}
這相當於:
static int a = 10;
您需要使用聲明的靜態塊在另一條線上進行分配(方法外)
class test {
static int a;
static { a=10; }
}
a = 4;必須在有效的範圍
任何方法或構造函數來完成...
這條線是有效的,而不是
static int a=10;
因爲Java允許youto聲明,並在一個語句中初始化!
如果要在將其定義爲空整型之後初始化a,則只能在函數中執行該操作,因爲它是靜態的。
'int'不能爲空。如果您未分配它,它的值將爲零。你不需要在一個函數中完成它,你也可以在初始化塊中完成它。 –
要添加到Andy的註釋中,事實上Java中沒有任何基本類型都是可以爲空的,它們將使用默認值進行初始化。 – px06
必須在靜態塊或init塊或構造函數中初始化。
你只能初始化函數或塊內聲明後,您的成員變量,因爲它是靜態的,你應該使用靜態塊
什麼目前你正在做的是在聲明一個類decleration,這是無效的變量。看看這個例子都不會給你任何好的結果。
類聲明中,你可以不過初始化變量:如果你想用它來工作
static int a;
然後,你必須首先創建一個方法(如果你沒有意識到這一點,我會強烈建議觀看一些YouTube的教程或閱讀關於這個主題的書):
public void foo(int a){
a = 6; //Here you can play with your variables and change them
}
在類declararions您可以:聲明方法,初始化和建設者。 (你可以做更多的事情,但是在潛入太深之前我會看看這些點)。
而且似乎你不知道什麼是靜態變量或靜態方法呢,我認爲下面的帖子會幫你:
difference between 'static int' and 'int' in java
What are static method and variables?
我希望我可以幫助和玩樂學習Java
用於在類加載時聲明的靜態變量內存,通過class.static變量或靜態變量來調用我們調用的變量。對於創建的@ object創建的實例變量內存,這意味着在創建對象時,我們通過聲明的變量進行調用。 – Attri
因爲在分類加載時分配靜態內存 所以我們需要這樣做 class test {static int a = 10; public static void main(String args []){a = 12 output(test.a(or)a);}}
您不能在變量的聲明中包含單獨變量的變量,超出任何方法或塊。 – SomeJavaGuy
你的兩個例子都不能編譯 – Idos
「對於第二個,我沒有收到任何錯誤。」你應該得到一個錯誤。 –