java?面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序
前言:
java中的代碼塊介紹以及一個(gè)類中不同位置對屬性賦值的執(zhí)行順序。
代碼塊
- 1.代碼塊的作用:用來初始化類、對象
- 2.代碼塊如果有修飾的話,只能使用 static
- 3.分類:靜態(tài)代碼塊 VS 非靜態(tài)代碼塊
- 4.靜態(tài)代碼塊
- 內(nèi)部可以有輸出語句。
- 隨著類的加載而執(zhí)行,而且只執(zhí)行一次。
- 作用:初始化類的信息。
- 如果一個(gè)類中定義了多個(gè)靜態(tài)代碼塊,則按照聲明的先后順序執(zhí)行。
- 靜態(tài)代碼塊的執(zhí)行要優(yōu)先于非靜態(tài)代碼塊的執(zhí)行。
- 靜態(tài)代碼塊內(nèi)只能調(diào)用靜態(tài)的屬性、靜態(tài)的方法,不能調(diào)用非靜態(tài)的結(jié)構(gòu)。
- 5.非靜態(tài)代碼塊
- 內(nèi)部可以有輸出語句。
- 隨著對象的創(chuàng)建而執(zhí)行。
- 每創(chuàng)建一個(gè)對象,就執(zhí)行一次非靜態(tài)代碼塊。
- 作用,可以在創(chuàng)建對象時(shí),對對象的屬性等進(jìn)行初始化。
- 如果一個(gè)類中定義了多個(gè)非靜態(tài)代碼塊,則按照聲明的先后順序執(zhí)行。
- 非靜態(tài)代碼塊內(nèi)可以調(diào)用靜態(tài)的屬性、靜態(tài)的方法、或非靜態(tài)的屬性、非靜態(tài)的方法。
對屬性可以賦值的位置
- 默認(rèn)初始化
- 顯式初始化
- 構(gòu)造器中初始化
- 在代碼塊中賦值
- 有了對象以后,可以通過"對象.屬性"或"對象.方法"的方式,進(jìn)行賦值
不同位置對屬性賦值的執(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("這是構(gòu)造器輸出的值:" + this.age);
}
{
this.age=3;
System.out.println("這是代碼塊輸出的值:" + this.age);
}
}
當(dāng)我們將顯式初始化和在代碼塊中賦值的順序調(diào)換一下,則結(jié)果又會不同,誰在上面,誰先執(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("這是構(gòu)造器輸出的值:" + this.age);
}
}
因此結(jié)論是:默認(rèn)初始化> 顯式初始化/在代碼塊中賦值 >構(gòu)造器中初始化>有了對象以后,可以通過"對象.屬性"或"對象.方法"的方式,進(jìn)行賦值
結(jié)語
到此這篇關(guān)于 java 面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序的文章就介紹到這了,更多相關(guān) java 屬性賦值執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java存儲過程調(diào)用CallableStatement的方法
這篇文章主要介紹了Java存儲過程調(diào)用CallableStatement的方法,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-11-11
spring boot task實(shí)現(xiàn)動態(tài)創(chuàng)建定時(shí)任務(wù)的方法
這篇文章主要介紹了spring boot task實(shí)現(xiàn)動態(tài)創(chuàng)建定時(shí)任務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
SpringMVC中Invalid bound statement (not f
本文主要介紹了SpringMVC中Invalid bound statement (not found)常見報(bào)錯(cuò)問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
java8 stream多字段排序的實(shí)現(xiàn)
這篇文章主要介紹了java8 stream多字段排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Java中String和StringBuffer及StringBuilder?有什么區(qū)別
這篇文章主要介紹了Java中String和StringBuffer及StringBuilder?有什么區(qū)別,String?是?Java?語言非常基礎(chǔ)和重要的類,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容2022-06-06
子線程任務(wù)發(fā)生異常時(shí)主線程事務(wù)回滾示例過程
這篇文章主要為大家介紹了子線程任務(wù)發(fā)生了異常時(shí)主線程事務(wù)如何回滾的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
解決Hibernate4執(zhí)行save()或update()無效問題的方法
這篇文章主要為大家詳細(xì)介紹了解決Hibernate4執(zhí)行save()或update()無效問題的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
Java實(shí)現(xiàn)解析zip壓縮包并獲取文件內(nèi)容
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)頁面上傳一個(gè)源碼壓縮包,后端將壓縮包解壓,并獲取每個(gè)文件中的內(nèi)容,感興趣的可以動手嘗試一下2022-07-07

