java?面向對象代碼塊及不同位置對屬性賦值的執(zhí)行順序
前言:
java中的代碼塊介紹以及一個類中不同位置對屬性賦值的執(zhí)行順序。
代碼塊
- 1.代碼塊的作用:用來初始化類、對象
- 2.代碼塊如果有修飾的話,只能使用 static
- 3.分類:靜態(tài)代碼塊 VS 非靜態(tài)代碼塊
- 4.靜態(tài)代碼塊
- 內部可以有輸出語句。
- 隨著類的加載而執(zhí)行,而且只執(zhí)行一次。
- 作用:初始化類的信息。
- 如果一個類中定義了多個靜態(tài)代碼塊,則按照聲明的先后順序執(zhí)行。
- 靜態(tài)代碼塊的執(zhí)行要優(yōu)先于非靜態(tài)代碼塊的執(zhí)行。
- 靜態(tài)代碼塊內只能調用靜態(tài)的屬性、靜態(tài)的方法,不能調用非靜態(tài)的結構。
- 5.非靜態(tài)代碼塊
- 內部可以有輸出語句。
- 隨著對象的創(chuàng)建而執(zhí)行。
- 每創(chuàng)建一個對象,就執(zhí)行一次非靜態(tài)代碼塊。
- 作用,可以在創(chuàng)建對象時,對對象的屬性等進行初始化。
- 如果一個類中定義了多個非靜態(tài)代碼塊,則按照聲明的先后順序執(zhí)行。
- 非靜態(tài)代碼塊內可以調用靜態(tài)的屬性、靜態(tài)的方法、或非靜態(tài)的屬性、非靜態(tài)的方法。
對屬性可以賦值的位置
- 默認初始化
- 顯式初始化
- 構造器中初始化
- 在代碼塊中賦值
- 有了對象以后,可以通過"對象.屬性"或"對象.方法"的方式,進行賦值
不同位置對屬性賦值的執(zhí)行順序
對于有代碼塊的賦值順序: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);
}
}
當我們將顯式初始化和在代碼塊中賦值的順序調換一下,則結果又會不同,誰在上面,誰先執(zhí)行
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 面向對象代碼塊及不同位置對屬性賦值的執(zhí)行順序的文章就介紹到這了,更多相關 java 屬性賦值執(zhí)行內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java存儲過程調用CallableStatement的方法
這篇文章主要介紹了Java存儲過程調用CallableStatement的方法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下2020-11-11
spring boot task實現(xiàn)動態(tài)創(chuàng)建定時任務的方法
這篇文章主要介紹了spring boot task實現(xiàn)動態(tài)創(chuàng)建定時任務,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
SpringMVC中Invalid bound statement (not f
本文主要介紹了SpringMVC中Invalid bound statement (not found)常見報錯問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05
Java中String和StringBuffer及StringBuilder?有什么區(qū)別
這篇文章主要介紹了Java中String和StringBuffer及StringBuilder?有什么區(qū)別,String?是?Java?語言非?;A和重要的類,更多相關內容需要的小伙伴可以參考下面文章內容2022-06-06
解決Hibernate4執(zhí)行save()或update()無效問題的方法
這篇文章主要為大家詳細介紹了解決Hibernate4執(zhí)行save()或update()無效問題的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06

