static代碼塊是在類初始化時就被虛擬機執行的,所以最先輸出的是d。
創新互聯是一家以網站設計建設,重慶小程序開發、網站開發設計,網絡軟件產品開發,企業互聯網推廣服務為主的民營科技公司。主要業務涵蓋:為客戶提供網站策劃、網站設計、網站開發、域名與空間、網站優化排名、買友情鏈接等服務領域。憑借建站老客戶口碑做市場,建設網站時,根據市場搜索規律和搜索引擎的排名收錄規律編程,全力為建站客戶設計制作排名好的網站,深受老客戶認可和贊譽。
main方法是靜態方法,是在類加載完之后由虛擬機調用的,調用之后才會輸出c1。
一般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,需要使用靜態代碼塊,這種代碼是主動執行的;
你的synchronized將while循環都鎖住了,所以其中一個線程會將整個while循環執行玩再走其他線程,但你的共享數據這時候已經被循環至0了,所以只有一個線程在執行
一般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,需要使用靜態代碼塊,這種代碼是主動執行的;需要在項目啟動的時候就初始化,在不創建對象的情況下,其他程序來調用的時候,需要使用靜態方法,這種代碼是被動執行的. 靜態方法在類加載的時候 就已經加載 可以用類名直接調用
比如main方法就必須是靜態的
先說執行順序:我們在new一個對象時,如果類還沒加載,就需要先將類加載到內存,此時就會執行靜態代碼塊,在創建對象時,是先執行代碼塊,然后執行構造器。所以靜態代碼塊、代碼塊、構造器的執行順序是:靜態代碼塊→代碼塊→構造器。
再說作用:靜態代碼塊是用于初始化類的(在加載類時執行,只執行一次),代碼塊是用于初始化對象的(在創建對象時執行,每次創建對象時都執行),構造器是用于創建對象的。
靜態代碼塊的定義是在類被加載進內存中的方法區的時候調用,而加載類到內存中只需要執行一次即可,所以靜態代碼塊也是只執行一次
順序執行,就是正常情況下
選擇執行(分支),就是用if else...可以使用多次,還有個switch? case
循環執行,常用的用for循環,while循環,do while循環
就我理解題意好像就這三種
分享名稱:java代碼塊執行 java的靜態代碼塊
URL地址:http://m.kartarina.com/article22/hepijc.html
成都網站建設公司_創新互聯,為您提供網站設計公司、App設計、面包屑導航、網站建設、網站收錄、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯