建立靜態方法與變數
-類別先載入記憶體,在根據類別產出物件。
-類別只會再記憶體內存在一次。
小結:
-以static修飾後,由instance-level轉成class-level
-class只會再記憶體內存在一次
-以static修飾屬性,則該屬性在不同的instance之間可以共享資料(或彼此互相干擾)。
靜態方法/變數之法則
-不可以在static-context內存取non-static的屬性或方法。
-反之,可以。
EX1:
public class Q1{
private int Id;
public void setId(int Id){
this.Id = id;
}
public int getId(){
return id;
}
}
public class Main{
public static void main(String[] arge){
Q1 q1 = new Q1();
Q1 q2 = new Q1();
q1.setId(1);
q2.setId(2);
System.out.println(q1.getId());
System.out.println(q2.getId());
}
}
Out:
1
2
EX2:
public class Q1{
private static int Id; <<<---升級為class-level可資料共享(或彼此互相擾)
public void setId(int Id){
this.Id = id;
}
public int getId(){
return id;
}
}
public class Main{
public static void main(String[] arge){
Q1 q1 = new Q1();
Q1 q2 = new Q1();
q1.setId(1);
q2.setId(2);
System.out.println(q1.getId());
System.out.println(q2.getId());
}
}
Out:
2
2
EX3:
public class Main{
public void f1(){
Main main = new Main();
String[] test = {"1"}; <<<--- non-static-context可存取static
main.main(test);
}
public static void main(String[] arge){
//f1(); <<<---static-context無法存取non-static
}
}
留言列表