我對final
和static
關鍵字的含義感到困惑。這是因爲,據我所知,static
在課堂上創建了一個單獨的記憶。一個static
字段只能從static
方法訪問。那麼,爲什麼當我在Test構造函數中聲明list
時沒有錯誤?如何使用final來實現靜態?
首先問:
public Test() {
list = new ArrayList();
list.add("foo");
}
當我宣佈
public class Test {
private static List list;
public Test() {
list = new ArrayList();
list.add("foo");
}
public static void main(String [] args) throws IOException{
list = new ArrayList();
Test t = new Test();
t.list.add("add");
System.out.print("Hello " + t.list);
}
}
它工作正常。但是當我加final
與static
,它不起作用。
第二個問題:
public class Test {
private static final List list;
public Test() {
list = new ArrayList();
list.add("foo");
}
public static void main(String [] args) throws IOException{
list = new ArrayList();
Test t = new Test();
t.list.add("add");
System.out.print("Hello" + t.list);
}
}
請解釋它是如何工作的內部。
你能細說正是你想在你的第二個問題已經解釋? – bleistift2
之前加入最後的工作。在工作最後它不工作。第二個問題爲什麼它不工作和內部機制?@ bleistift2 –
你從哪裏得到「一個靜態字段只能從靜態方法訪問」。這是不正確的。事實是,您無法從靜態方法訪問非靜態字段。所有其他組合都是允許的。 – Henry