您好,登錄后才能下訂單哦!
這篇文章主要介紹“java面向對象代碼塊及不同位置對屬性賦值的執行順序是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“java面向對象代碼塊及不同位置對屬性賦值的執行順序是什么”文章能幫助大家解決問題。
1.代碼塊的作用:用來初始化類、對象
2.代碼塊如果有修飾的話,只能使用 static
3.分類:靜態代碼塊 VS 非靜態代碼塊
4.靜態代碼塊
內部可以有輸出語句。
隨著類的加載而執行,而且只執行一次。
作用:初始化類的信息。
如果一個類中定義了多個靜態代碼塊,則按照聲明的先后順序執行。
靜態代碼塊的執行要優先于非靜態代碼塊的執行。
靜態代碼塊內只能調用靜態的屬性、靜態的方法,不能調用非靜態的結構。
5.非靜態代碼塊
內部可以有輸出語句。
隨著對象的創建而執行。
每創建一個對象,就執行一次非靜態代碼塊。
作用,可以在創建對象時,對對象的屬性等進行初始化。
如果一個類中定義了多個非靜態代碼塊,則按照聲明的先后順序執行。
非靜態代碼塊內可以調用靜態的屬性、靜態的方法、或非靜態的屬性、非靜態的方法。
默認初始化
顯式初始化
構造器中初始化
在代碼塊中賦值
有了對象以后,可以通過"對象.屬性"或"對象.方法"的方式,進行賦值
對于有代碼塊的賦值順序:1>2 / 4>3>5
package 代碼塊; public class Demo { public static void main(String[] args) { People p = new People(); p.age = 4; System.out.println("這是對象.屬性賦值后輸出的值:" + p.age); } } class People{ int age = 1; People(){ this.age = 2; System.out.println("這是構造器輸出的值:" + this.age); } { this.age=3; System.out.println("這是代碼塊輸出的值:" + this.age); } }
當我們將顯式初始化和在代碼塊中賦值的順序調換一下,則結果又會不同,誰在上面,誰先執行
package 代碼塊; public class Demo { public static void main(String[] args) { People p = new People(); System.out.println("這是對象.屬性賦值前輸出的值:" + p.age); p.age = 4; System.out.println("這是對象.屬性賦值后輸出的值:" + p.age); } } class People{ { this.age=3; System.out.println("這是代碼塊輸出的值:" + this.age); } int age = 1; People(){ System.out.println("這是構造器輸出的值:" + this.age); } }
因此結論是:默認初始化> 顯式初始化/在代碼塊中賦值 >構造器中初始化>有了對象以后,可以通過"對象.屬性"或"對象.方法"的方式,進行賦值。
關于“java面向對象代碼塊及不同位置對屬性賦值的執行順序是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。