標籤:java static
static
static可以修飾屬性,方法,代碼塊,內部類
特點
- 隨著類的載入而載入
- 優先於對象存在
- 修飾的成員被所有對象所共用
- 存取權限允許時,可以不建立對象,直接被類調用
static修飾的屬性,儲存在記憶體中的靜態地區,整個程式中只有這一個成員
public class Test { public static void main(String[] args) { Person p = new Person(); Person.setName("ttf");//類可以直接存取靜態方法 System.out.println(Person.name);//使用類直接存取靜態屬性 }}class Person { static String name;//靜態屬性, int age;//成員屬性,屬於對象的 public static void setName(String name) { Person.name = name; }}
使用
- 如果一個類中有屬性是使用static修飾的,這個屬性只能被類直接存取(不是使用private修飾的),或者被有static修飾的類方法訪問
- 類的執行個體對象不能訪問靜態屬性(有static修飾的屬性),和靜態方法(有static修飾的方法)
p.setName("ttf")//錯誤,p不能訪問靜態方法同時也不能訪問靜態屬性。
- 靜態方法不能訪問類的成員變數(沒有static修飾的屬性),靜態方法也就是類方法
- static屬性一旦被初始化,也就是只被初始化一次,整個類中只有這一個變數
靜態代碼塊
- 靜態代碼塊就是使用static修飾的一個程式碼片段,
- 若有多個靜態代碼塊,按照從上到下的順序依次執行
- 靜態代碼塊的執行要先於非靜態代碼塊
- 靜態代碼塊只執行一次
- 使用類的時候就會初始化
public class Test { public static void main(String[] args) { //Person p = new Person(); System.out.println(Person.name);//ttf }}class Person { static String name; int age; /*靜態代碼塊*/ static { name = "ttf"; }}
【Java總結】static,靜態代碼塊