日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础篇:四种代码块详解

發布時間:2024/9/30 java 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础篇:四种代码块详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所謂代碼塊,就是用大括號{}將多行代碼封裝在一起,形成一個獨立的數據體,用于實現特定的算法。一般來說,代碼塊是不能單獨運行的,它必須有運行主體。在Java中代碼塊主要分為四種:普通代碼塊、靜態代碼塊、同步代碼塊、構造代碼塊。

一、普通代碼塊:

普通代碼塊就是類中方法的方法體;普通代碼塊是不能夠單獨存在的,他必須緊跟在方法名后面,同時也必須使用方法名調用它。

public class Test {public void test(){System.out.println("普通代碼塊");} }

二、靜態代碼塊:

靜態代碼塊就是用static修飾的用{}括起來的代碼段,他的主要目的就是對靜態屬性進行初始化。靜態代碼塊在第一次加載此類的時候被執行,并且只會執行一次,靜態代碼塊優先優先于構造代碼塊執行。

public class Test {static{System.out.println("靜態代碼塊");} }

三、同步代碼塊:

同步代碼塊,就是使用synchronized關鍵字修飾的用{}括起來的代碼片段,他表示同一時間只能有一個線程進入到該方法塊中,是一種多線程保護機制。在多線程環境下,對共享數據進行讀寫操作是需要互斥進行的,否則會導致數據的不一致性,常見的是synchronized用來修飾方法,其語義是任何線程進入synchronized需要先取得對象鎖,如果對象鎖被占用了,則阻塞等待。synchronized實現了互斥訪問共享資源,但synchronized也是有代價的,會造成系統性能的降低。

public class Test {synchronized(obj){ System.out.println("同步代碼塊");} }

四、構造代碼塊:

構造代碼塊就是用{}括起來的代碼片段,構造代碼塊會在創建對象時被調用,每次創建對象時會被調用,并且優先于類構造函數執行。構造代碼塊中定義的變量是局部變量。

new一個對象的時候總是先執行構造代碼,在執行構造函數。但是有一點需要注意的是,構造代碼塊不是在構造函數之前運行的,它是依托構造函數執行的。正式由于構造代碼塊有這幾個特性,所以它常用語如下場景:

1、初始化實例變量:

如果一個類中存在若干個構造函數,這些構造函數都需要對實例變量進行初始化,如果我們直接在構造函數中實例化,必定會產生很多重復代碼,繁瑣和可讀性差。這時,我們可以充分利用構造代碼塊來實現,這是利用編譯器會將構造代碼塊添加到每個構造函數中的特性。

2、初始化實例環境:

一個對象必須在適當的場景下才能存在,如果沒有適當的場景,則就需要在創建對象時創建此場景,我們可以利用構造代碼塊來創建此場景,尤其是該場景的創建過程較為復雜的時候。

上面兩個常用場景都充分利用構造代碼塊的特性,能夠很好的解決在實例化對象時構造函數比較難解決的問題,利用構造代碼不僅可以減少代碼量,同時也是程序的可讀性增強了。特別是當一個對象的創建過程比較復雜,需要實現一些復雜邏輯,這個時候如果在構造函數中實現邏輯,這是不推薦的,因為我們提倡構造函數要盡可能的簡單易懂,所以我們可以使用構造代碼封裝這些邏輯實現部分。

參考博客:

https://blog.csdn.net/zhangzeyuaaa/article/details/16907921

https://blog.csdn.net/chenssy/article/details/14486833

總結

以上是生活随笔為你收集整理的Java基础篇:四种代码块详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。