6.java 代碼塊

代碼塊

在java中用{}括起來的稱為代碼塊,代碼塊可分為以下四種:

  • 普通代碼塊
  • 構造代碼塊
  • 靜態代碼塊
  • 同步代碼塊

普通代碼塊

在方法或語句中出現的{}就稱為普通代碼塊。普通代碼塊和一般語句的執行順序由他們在代碼中出現的次序決定,先出現先執行。

普通代碼塊一般過來限制變量的作用域,防止代碼過多時可能產生的變量命名沖突。

示例:

public class testDemo {public static void main(String[] args ) {{int x = 3;System.out.println("普通代碼塊中的變量x=" + x);}int x = 1;System.out.println("主方法中的變量想=" + x);{int y = 7;System.out.println("普通代碼塊中的變量y=" + y);}}}

構造代碼塊

在類中直接使用沒有任何修飾符的{}聲明的代碼塊就是構造塊。

和構造函數的作用類似,都能對對象進行初始化,并且只要實例化一個對象,構造代碼塊都會執行一次。

構造塊優先于構造函數執行,如果存在多個構造代碼塊,則執行順序按照定義的順序依次執行。

示例:

public class testDemo {public static void main(String[] args ) {Test t = new Test();}
}class Test{{//構造代碼塊System.out.println("構造代碼塊1。");}//構造函數public Test(){System.out.println("無參構造函數。");}{//構造代碼塊System.out.println("構造代碼塊2。");}
}
輸出結果:
構造代碼塊1。
構造代碼塊2。
無參構造函數。

靜態代碼塊

在java中使用static關鍵字聲明的代碼塊。靜態塊用于初始化類,為類的屬性初始化。

靜態代碼塊在類被加載的時候就運行了,而且只運行一次,并且優先于各種代碼塊以及構造函數。如果一個類中有多個靜態代碼塊,會按照書寫順序依次執行。

一般情況下,如果有些代碼需要在項目啟動的時候就執行,這時候就需要靜態代碼塊。比如一個項目啟動需要加載的很多配置文件等資源,我們就可以都放入靜態代碼塊中。

示例:

public class testDemo {public static void main(String[] args ) {Test t1 = new Test();System.out.println("**********");Test t2 = new Test();}
}class Test{static {//靜態代碼塊System.out.println("靜態代碼塊1。");}//構造函數public Test(){System.out.println("無參構造函數。");}static {//靜態代碼塊System.out.println("靜態代碼塊2。");}  
}輸出結果:
靜態代碼塊1。
靜態代碼塊2。
無參構造函數。
**********
無參構造函數。

同步代碼塊

使用synchronized(){}包裹起來的代碼塊,在多線程環境下,對共享數據的讀寫操作是需要互斥進行的,否則會導致數據的不一致性。同步代碼塊需要寫在方法中。

代碼塊執行順序

靜態代碼塊 > 構造代碼塊 > 構造函數

示例:

public class testDemo {public static void main(String[] args ) {Test t = new Test();}
}class Test{{//構造代碼塊System.out.println("構造代碼塊");}//構造函數public Test(){System.out.println("構造函數");}static {//靜態代碼塊System.out.println("靜態代碼塊");}}輸出結果:
靜態代碼塊
構造代碼塊
構造函數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252220.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#如何測試代碼運行時間

第一種方式:System.Diagnostics.Stopwatch stopwatch new Stopwatch(); stopwatch.Start(); // 開始監視代碼運行時間 // 需要測試的代碼 .... stopwatch.Stop(); // 停止監視 TimeSpan timespan stopwatch.Elapsed; // 獲取當前實例測量得出的總時間 double …

0074 幾道面試題

昨天參加了惠裝網的面試,有些題不會做的,記錄下來 switch語句能否作用在byte、long、String上 Java1.7以前:byte、short、int、char Java1.7開始:新增String 因此switch語句不能作用在long上,看下面代碼: p…

SpringBoot入門之內嵌Tomcat配置

spring boot默認web程序啟用tomcat內嵌容器tomcat,監聽8080端口,servletPath默認為 / 。需要用到的就是端口、上下文路徑的修改,在spring boot中其修改方法極其簡單,實例如下: server.port8088 server.context-path/test 啟動程序…

第二十二章:動畫(六)

復合動畫您可以混合等待和未等待的調用來創建復合動畫。 例如,假設您希望按鈕在大小擴展的同時旋轉360度然后收縮。ViewExtensions類定義一個方法名稱ScaleTo,它為Scale屬性設置動畫,就像RotateTo為Rotate屬性設置動畫一樣。 Button大小的擴展…

C#操作Excel總結

0. 導入命名空間: 1234using Microsoft.Office.Core;using Microsoft.Office.Interop.Excel;using System.IO;using System.Reflection;1. 如何打開已有excel文檔,或者創建一個新的excel文檔 123Application app new Application();Workbooks wbks app…

Ubuntu16.04用源安裝Nginx+PHP5.6+MySQL5.6

安裝Nginx 1、首先添加nginx_signing.key(必須,否則出錯) $ wget http://nginx.org/keys/nginx_signing.key$ sudo apt-key add nginx_signing.key 2、添加]Nginx](http://nginx.org/)官方提供的源 $ echo "deb http://nginx.org/packages/ubuntu/ trusty ngin…

leetcode -39組合總數

搜就完事了,沒想著優化。唉~太菜,給一個位置標記位置,然后通過該位置向該位置及該位置以下尋找,這樣不存在什么重復回去查找問題。 如果總結大于目標值,回溯一下,如果不大于繼續。 class Solution { public…

避免某個子窗體重復運行的方法(showdialog、show)

在C#中窗口的顯示有兩種方式:模態顯示(showdialog)和非模態顯示(show)。 二者最常見的區別是:模態顯示后,彈出窗口阻止調用窗口的所有消息響應。只有在彈出窗口結束后調用窗口才能繼續。在模態窗…

ubantu之Git使用

本文講述在Ubuntu 14.04 x64環境下,如何安裝Git,配置連接GitHub,并且上傳本地代碼到github。 一. 注冊Git賬戶以及創建倉庫 要想使用github第一步當然是注冊github賬號了。之后就可以創建倉庫了(免費用戶只能建公共倉庫&#xff0…

Java中基礎數據類型分類

Java中的四類八種基本數據類型 第一類:整數類型 byte short int long (int是整形,也屬于整數類型) 第二類:浮點型 float double 第三類:邏輯型 boolean(它只有兩個值可取true false) 第四類&#xff1…

C#如何打包EXE程序生成setup安裝文件

C#如何打包EXE程序生成setup安裝文件作為研發人員,在本機上開發的winform wpf或者控制臺程序需要發給其他人測試時候,一般需要對其進行打包生成setup安裝文件,今天第一次,搜了下資料,記錄如下:注&#xff1…

PHP正則表達式

php正則表達示的定界符 PHP的正則表達示定界符的規定如下: 定界符,不能用a-z A-Z 0-9 其他的都可以用。必須成對出現,有開始就有結束。 我們來例幾個例子: /中間寫正則/ 正確%中間寫正則% 正確^中間寫正則^ 正確中間寫正則 正確(…

最具戲劇性的分析診斷案例——十分鐘鎖定數據庫性能“元兇”

昨天,正好有點空時間想看看書,結果,剛打開書,沒看幾個字兒,接到用戶電話說:一個庫有問題,希望能幫忙看下。因為我知道他們那邊也有自己的專職DBA,于是問:沒讓人給看看嗎&…

Python黑科技:在家遠程遙控公司電腦,python+微信一鍵連接!

有時候需要遠程家里的臺式機使用,因為我平時都是用 MAC 多,但是遠程喚醒只能針對局域網,比較麻煩,于是我想用微信實現遠程喚醒機器。 *注意:全文代碼可左右滑動查看 準備工作 本程序主要是實現遠程管理 Windows10操作系…

c#通過app.manifest使程序以管理員身份運行

通常我們使用c#編寫的程序不會彈出這個提示,也就無法以管理員身分運行。微軟的操作系統使用微軟的產品方法當然是有的,通過app.manifest配置可以使程序打開的時候,彈出UAC提示需要得到允許才可以繼續,這樣就獲得了管理員的權限來執…

Oracle 作業

Oracle 作業 dbms_job與 dbms_scheduler 用于安排和管理作業隊列,通過使用作業,可以使ORACLE數據庫定期執行特定的任務。 一. dbms_job 1.1. 創建 variable jobno number; begin dbms_job.submit(:jobno,proce_t;, sysdate, sysdate1/24/60); commit; end; / 1.2. 參數 Job 輸出…

企業級 Spring Boot 教程 (十四)用restTemplate消費服務

構架工程 創建一個springboot工程,去消費RESTFUL的服務。這個服務是 http: ///gturnquist-quoters.cfapps.io/api/random ,它會隨機返回Json字符串。 Spring Cloud大型企業分布式微服務云架構源碼請加一七九一七四三三八零 在Spring項目中,它…

MOS管基本認識(快速入門)

1. 三個極的判定G極(gate)—柵極,不用說比較好認 S極(source)—源極,不論是P溝道還是N溝道,兩根線相交的就是 D極(drain)—漏極,不論是P溝道還是N溝道,是單獨引線的那邊2. N溝道與P溝道判別箭頭指向G極的是N溝道 箭頭背…

基礎構建模塊

5 基礎構建模塊 Java平臺類庫包含了豐富的并發基礎構建模塊,例如線程安全的容器類以及各種用于協調多個相互協作的線程控制流的同步工具類(Synchronizer)。本章將介紹其中一些最有用的并發構建模塊。 5.1同步容器類 同步容器類包括Vector和Hashtable,二者…

TCP定時器

1. TCP中7種定時器 TCP中有7中定時器 (1)建立連接定時器(connection-establishment timer) (2)重傳定時器(retransmission timer) (3)延遲應答定時器(delayed ACK timer) (4)堅持定時…