摘要:代碼塊我們主要觀察普通代碼塊構(gòu)造塊靜態(tài)塊的主要作用。代碼實(shí)例構(gòu)造方法類(lèi)的構(gòu)造方法將代碼塊寫(xiě)在了類(lèi)里面類(lèi)的構(gòu)造塊控制臺(tái)輸出類(lèi)的構(gòu)造塊類(lèi)的構(gòu)造方法此時(shí)實(shí)例化類(lèi)對(duì)象時(shí),雖然執(zhí)行的是類(lèi)的構(gòu)造方法,但是構(gòu)造塊里面的代碼也執(zhí)行了。
代碼塊
我們主要觀察普通代碼塊、構(gòu)造塊、靜態(tài)塊的主要作用。
在程序編寫(xiě)之中可以直接使用"{}" 定義一段語(yǔ)句,那么根據(jù)此部分定義的位置以及關(guān)鍵字的不同可以分為以下幾種:
普通代碼塊
構(gòu)造塊
靜態(tài)塊
不過(guò),我們?cè)趯?xiě)程序的時(shí)候,盡量不去使用代碼塊。
普通代碼塊如果說(shuō)一個(gè)代碼塊寫(xiě)在了方法里,那么就稱它了普通代碼塊。
代碼實(shí)例
下面說(shuō)的變量,只是相對(duì)關(guān)系。
public class TestDemo { public static void main(String[] args) { {// 普通代碼塊 int num = 10; //局部變量 System.out.println(num); } int num = 100; // 相對(duì)的上面的局部變量,為全局變量 System.out.println(num); } }
實(shí)際上普通代碼塊就是為了防止在方法里面編寫(xiě)的代碼過(guò)多時(shí),有可能產(chǎn)生的變量重名。對(duì)一個(gè)方法的代碼進(jìn)行局部分割。
構(gòu)造塊如果說(shuō)現(xiàn)在將一個(gè)代碼塊寫(xiě)在了一個(gè)類(lèi)里面,那么我們就稱為構(gòu)造塊。
代碼實(shí)例
class Book{ public Book() { // 構(gòu)造方法 System.out.println("【A】 Book 類(lèi)的構(gòu)造方法"); } {// 將代碼塊寫(xiě)在了類(lèi)里面 System.out.println("【B】 Book 類(lèi)的構(gòu)造塊"); } } public class TestDemo { public static void main(String[] args) { new Book(); } }
控制臺(tái)輸出
【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法
此時(shí)實(shí)例化 Book 類(lèi)對(duì)象時(shí),雖然執(zhí)行的是 Book 類(lèi)的構(gòu)造方法,但是構(gòu)造塊里面的代碼也執(zhí)行了。并且會(huì)發(fā)現(xiàn)構(gòu)造塊的代碼是優(yōu)先于 構(gòu)造方法執(zhí)行。
代碼實(shí)例
class Book{ public Book() { // 構(gòu)造方法 System.out.println("【A】 Book 類(lèi)的構(gòu)造方法"); } {// 將代碼塊寫(xiě)在了類(lèi)里面 System.out.println("【B】 Book 類(lèi)的構(gòu)造塊"); } } public class TestDemo { public static void main(String[] args) { new Book(); new Book(); new Book(); } }
控制臺(tái)輸出
【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法 【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法 【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法
從控制臺(tái)的輸出可以看到,每當(dāng)我們實(shí)例化一個(gè) Book 類(lèi)時(shí),我們的構(gòu)造塊都會(huì)被執(zhí)行一次。
靜態(tài)塊如果我們的代碼塊使用了 static 進(jìn)行定義的話,那么就被稱為靜態(tài)塊。我們分為兩種情況來(lái)看。
在非主類(lèi)中使用代碼實(shí)例
class Book{ public Book() { // 構(gòu)造方法 System.out.println("【A】 Book 類(lèi)的構(gòu)造方法"); } {// 將代碼塊寫(xiě)在了類(lèi)里面 System.out.println("【B】 Book 類(lèi)的構(gòu)造塊"); } static {// 將代碼塊寫(xiě)在了類(lèi)里面 System.out.println("【C】 Book 類(lèi)的構(gòu)造塊"); } } public class TestDemo { public static void main(String[] args) { new Book(); new Book(); new Book(); } }
控制臺(tái)輸出
【C】 Book 類(lèi)的構(gòu)造塊 【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法 【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法 【B】 Book 類(lèi)的構(gòu)造塊 【A】 Book 類(lèi)的構(gòu)造方法
從上面我們可以看到,靜態(tài)塊只是執(zhí)行了一次,并且是優(yōu)先于構(gòu)造方法和構(gòu)造塊。也就是說(shuō),不管實(shí)例化多少個(gè)對(duì)象,靜態(tài)塊只執(zhí)行一次。
在主類(lèi)中使用代碼實(shí)例
public class TestDemo { static { System.out.println("**********"); } public static void main(String[] args) { System.out.println("main()"); } }
控制臺(tái)輸出
********** main()
從控制臺(tái)的輸出,我們就可以知道,static 靜態(tài)塊 是優(yōu)先于 main 方法執(zhí)行的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/76746.html
以下是Java技術(shù)棧微信公眾號(hào)發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個(gè)方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書(shū)籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識(shí) Java父類(lèi)強(qiáng)制轉(zhuǎn)換子類(lèi)原則 一張圖搞清楚 Java 異常機(jī)制 通用唯一標(biāo)識(shí)碼UUID的介紹及使用 字符串...
摘要:后端好書(shū)閱讀與推薦這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。高級(jí)程序設(shè)計(jì)高級(jí)程序設(shè)計(jì)第版豆瓣有人可能會(huì)有疑問(wèn),后端為啥要學(xué)呢其實(shí)就是為了更好的使用做鋪墊。 后端好書(shū)閱讀與推薦 這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。今天突然想要做個(gè)決定:每天至少花1-3小時(shí)用來(lái)看書(shū)。這里我準(zhǔn)備把這...
摘要:后端好書(shū)閱讀與推薦這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。高級(jí)程序設(shè)計(jì)高級(jí)程序設(shè)計(jì)第版豆瓣有人可能會(huì)有疑問(wèn),后端為啥要學(xué)呢其實(shí)就是為了更好的使用做鋪墊。 后端好書(shū)閱讀與推薦 這一兩年來(lái)養(yǎng)成了買(mǎi)書(shū)看書(shū)的習(xí)慣,陸陸續(xù)續(xù)也買(mǎi)了幾十本書(shū)了,但是一直沒(méi)有養(yǎng)成一個(gè)天天看書(shū)的習(xí)慣。今天突然想要做個(gè)決定:每天至少花1-3小時(shí)用來(lái)看書(shū)。這里我準(zhǔn)備把這...
摘要:方法區(qū)存儲(chǔ)不變的東西類(lèi)加載信息,靜態(tài)變量,字符串常量。通用分代垃圾回收基礎(chǔ)時(shí)只需要知道有這幾種方法即可四內(nèi)存分析靜態(tài)變量,靜態(tài)方法,靜態(tài)初始化塊靜態(tài)變量與方法不需要具體的對(duì)象就可以調(diào)用用類(lèi)名調(diào)用,靜態(tài)初始化塊后就會(huì)調(diào)用了。 一:面向?qū)ο笈c面向過(guò)程 籠統(tǒng)說(shuō),一個(gè)流程簡(jiǎn)單一個(gè)復(fù)雜,面向過(guò)程好比開(kāi)車(chē)上路,可以簡(jiǎn)單羅列出幾個(gè)動(dòng)作:上車(chē),系安全帶,點(diǎn)火,出發(fā);向過(guò)程好比造出一輛汽車(chē),肯定不能...
摘要:表示的是兩個(gè),當(dāng)其中任意一個(gè)計(jì)算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經(jīng)??梢?jiàn)它的使用,在開(kāi)始分析它的高并發(fā)實(shí)現(xiàn)機(jī)制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購(gòu),是兩個(gè)比較典型的互聯(lián)網(wǎng)高并發(fā)場(chǎng)景。 干貨:深度剖析分布式搜索引擎設(shè)計(jì) 分布式,高可用,和機(jī)器學(xué)習(xí)一樣,最近幾年被提及得最多的名詞,聽(tīng)名字多牛逼,來(lái),我們一步一步來(lái)?yè)羝魄皟蓚€(gè)名詞,今天我們首先來(lái)說(shuō)說(shuō)分布式。 探究...
閱讀 2737·2023-04-25 18:10
閱讀 1680·2019-08-30 15:53
閱讀 2944·2019-08-30 13:10
閱讀 3297·2019-08-29 18:40
閱讀 1194·2019-08-23 18:31
閱讀 1261·2019-08-23 16:49
閱讀 3458·2019-08-23 16:07
閱讀 929·2019-08-23 15:27