java面向對象,靜態代碼塊以及對象的初始化過程和對象調用成員過程

靜態代碼塊

靜態代碼塊:對類進行初始化

		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變量.

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章