靜態代碼塊
靜態代碼塊:對類進行初始化
static{
//靜態代碼塊中的執行語句。
}
//特點:隨着類的加載而執行只執行一次,並優先於主函數,優先於構造代碼塊。
對象的初始化
首先來看一段代碼
class Person
{
private String name;
private int age;
private static String country="cn";
Preson(String name,int age)
{
this.name=name;
this.age=age;
}
public void setName(String name)
{
this.name=name;
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person P = new Person (" zhangsan",20) ;
}
}
Person P = new Person (" zhangsan",20) ;
該句話都做了什麼事情?
1,因爲new用到了person. class.所以會先找到person.class文件並加載到內存中。
2,執行該類中的static代碼塊, 如果有的話,給Berson. class類進行初始化
3,在堆內存中開闢空間,分配內存地址.
4,在堆內存中建立對象的特有屬性。並進行默認初始化。
5,對屬性進行顯示初始化。
6,對對象進行構造代碼塊初始化.
7,對對象進行對應的構造函數初始化。
8,將內存地址付給棧內存中的p變量.
過程見下圖:
對象調用成員過程
代碼同上段代碼;
1對對象進行對應的函數賦值。
2將內存地址付給棧內存中的p變量.