最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java靜態(tài)代碼塊作用及執(zhí)行順序解析

 更新時(shí)間:2020年04月27日 09:10:24   作者:心~晴  
這篇文章主要介紹了Java靜態(tài)代碼塊作用及執(zhí)行順序解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行,需要使用靜態(tài)代碼塊。這種代碼是主動(dòng)執(zhí)行的,需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化。

有些代碼是在不創(chuàng)建對象的情況下,由其他程序來調(diào)用,需要使用靜態(tài)方法。這種代碼是被動(dòng)執(zhí)行的。 靜態(tài)方法在類加載的時(shí)候就已經(jīng)加載,可以用類名直接調(diào)用

比如main方法就必須是靜態(tài)的 這是程序入口

兩者的區(qū)別就是:靜態(tài)代碼塊是自動(dòng)執(zhí)行的,而靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的。

區(qū)別很簡單:

靜態(tài)代碼塊,在虛擬機(jī)加載類的時(shí)候就會(huì)加載執(zhí)行,而且只執(zhí)行一次;

非靜態(tài)代碼塊,在創(chuàng)建對象的時(shí)候(即new一個(gè)對象的時(shí)候)執(zhí)行,每次創(chuàng)建對象都會(huì)執(zhí)行一次

相同點(diǎn):都是在JVM加載類時(shí)且在構(gòu)造方法執(zhí)行之前執(zhí)行,在類中都可以定義多個(gè),

    一般在代碼塊中對一些static變量進(jìn)行賦值。

不同點(diǎn):靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—>非靜態(tài)代碼塊—>構(gòu)造方法)。

    靜態(tài)代碼塊只在第一次類加載時(shí)執(zhí)行一次,之后不再執(zhí)行,而非靜態(tài)代碼塊在每new

    一次就執(zhí)行一次。非靜態(tài)代碼塊可在普通方法中定義(不過作用不大);而靜態(tài)代碼塊不行。

例:

//普通類
public class PuTong {
	public PuTong(){
		System.out.print("默認(rèn)構(gòu)造方法!-->");
	}
	//非靜態(tài)代碼塊
	{
		System.out.print("非靜態(tài)代碼塊!-->");
	}
	//靜態(tài)代碼塊
	static{
		System.out.print("靜態(tài)代碼塊!-->");
	}
	public static void test(){
		{
			System.out.println("普通方法中的代碼塊!");
		}
	}
}
//測試類
public class TestClass {
	/**
* 區(qū)別兩次new靜態(tài)與非靜態(tài)代碼塊執(zhí)行情況
*/
	public static void main(String[] args) {
		PuTong c1 = new PuTong();
		c1.test();
		PuTong c2 = new PuTong();
		c2.test();
	}
}
/*
運(yùn)行輸出結(jié)果是:
靜態(tài)代碼塊!-->非靜態(tài)代碼塊!-->默認(rèn)構(gòu)造方法!-->普通方法中的代碼塊!
非靜態(tài)代碼塊!-->默認(rèn)構(gòu)造方法!-->普通方法中的代碼塊!
*/

繼承的時(shí)候:

分析:對象的初始化順序:首先執(zhí)行父類靜態(tài)的內(nèi)容,父類靜態(tài)的內(nèi)容執(zhí)行完畢后,接著去執(zhí)行子類的靜態(tài)的內(nèi)容,當(dāng)子類的靜態(tài)內(nèi)容執(zhí)行完畢之后,再去看父類有沒有非靜態(tài)代碼塊,

如果有就執(zhí)行父類的非靜態(tài)代碼塊,父類的非靜態(tài)代碼塊執(zhí)行完畢,接著執(zhí)行父類的構(gòu)造方法;父類的構(gòu)造方法執(zhí)行完畢之后,它接著去看子類有沒有非靜態(tài)代碼塊,如果有就執(zhí)行子類的非靜態(tài)代碼塊。

子類的非靜態(tài)代碼塊執(zhí)行完畢再去執(zhí)行子類的構(gòu)造方法。總之一句話,靜態(tài)代碼塊內(nèi)容先執(zhí)行,接著執(zhí)行父類非靜態(tài)代碼塊和構(gòu)造方法,然后執(zhí)行子類非靜態(tài)代碼塊和構(gòu)造方法。

而且子類的構(gòu)造方法,不管這個(gè)構(gòu)造方法帶不帶參數(shù),默認(rèn)的它都會(huì)先去尋找父類的不帶參數(shù)的構(gòu)造方法。如果父類沒有不帶參數(shù)的構(gòu)造方法,那么子類必須用supper關(guān)鍵子來調(diào)用父類帶參數(shù)的構(gòu)造方法,否則編譯不能通過。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中Mono類的一些基本方法和示例代碼

    Java中Mono類的一些基本方法和示例代碼

    在Java編程中,我們經(jīng)常會(huì)遇到需要?jiǎng)?chuàng)建單例(singleton)對象的情況,單例模式是一種常見的設(shè)計(jì)模式,它保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問點(diǎn),這篇文章主要給大家介紹了關(guān)于Java中Mono類的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • java多線程中的volatile和synchronized用法分析

    java多線程中的volatile和synchronized用法分析

    這篇文章主要介紹了java多線程中的volatile和synchronized用法分析,以實(shí)例的形式分析了在多線程中volatile和synchronized的用法區(qū)別與使用原理,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Spring MVC異常處理機(jī)制示例詳解

    Spring MVC異常處理機(jī)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC異常處理機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring MVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 使用MyBatisPlus自動(dòng)生成代碼后tomcat運(yùn)行報(bào)錯(cuò)的問題及解決方法

    使用MyBatisPlus自動(dòng)生成代碼后tomcat運(yùn)行報(bào)錯(cuò)的問題及解決方法

    這篇文章主要介紹了使用MyBatisPlus自動(dòng)生成代碼后tomcat運(yùn)行報(bào)錯(cuò)的問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 使用java實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲

    使用java實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲

    這篇文章主要介紹了使用java實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 深入理解注解與自定義注解的一些概念

    深入理解注解與自定義注解的一些概念

    今天給大家?guī)淼奈恼率亲⒔獾南嚓P(guān)知識,本文圍繞著注解與自定義注解的一些概念展開,文中詳細(xì)介紹了這些知識,需要的朋友可以參考下
    2021-06-06
  • Maven resrouce下filtering的使用方法

    Maven resrouce下filtering的使用方法

    本文介紹了Maven的resource插件中的filtering功能,該功能用于在構(gòu)建過程中將資源目錄下的文件中的tokens進(jìn)行參數(shù)替換,tokens的來源可以是pom文件中的properties屬性或外部的.properties文件,通過這種方式,可以靈活地切換不同開發(fā)環(huán)境下的配置屬性
    2024-11-11
  • Java實(shí)現(xiàn)拓?fù)渑判虻氖纠a

    Java實(shí)現(xiàn)拓?fù)渑判虻氖纠a

    這篇文章我們要講的是拓?fù)渑判?,這是一個(gè)針對有向無環(huán)圖的算法,主要是為了解決前驅(qū)后繼的關(guān)系,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • SpringBoot MockMvc單元測試的示例代碼

    SpringBoot MockMvc單元測試的示例代碼

    這篇文章主要介紹了SpringBoot MockMvc單元測試的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 淺析Spring IOC bean為什么默認(rèn)是單例

    淺析Spring IOC bean為什么默認(rèn)是單例

    單例的意思就是說在 Spring IoC 容器中只會(huì)存在一個(gè) bean 的實(shí)例,無論一次調(diào)用還是多次調(diào)用,始終指向的都是同一個(gè) bean 對象,本文小編將和大家一起分析Spring IOC bean為什么默認(rèn)是單例,需要的朋友可以參考下
    2023-12-12

最新評論

盈江县| 贵港市| 开江县| 衡东县| 得荣县| 威宁| 新安县| 尼勒克县| 瑞昌市| 蒙城县| 徐州市| 高阳县| 商南县| 航空| 合阳县| 十堰市| 麻栗坡县| 仙桃市| 大连市| 商南县| 曲阜市| 元江| 黔江区| 灌南县| 城固县| 陕西省| 桃江县| 灵石县| 桑植县| 崇礼县| 平果县| 扎兰屯市| 开远市| 梅河口市| 丰原市| 泰和县| 林芝县| 佳木斯市| 双流县| 徐汇区| 三亚市|