程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> javaee-java中構造塊和成員變量的執行順序是依據什麼機制?

javaee-java中構造塊和成員變量的執行順序是依據什麼機制?

編輯:編程綜合問答
java中構造塊和成員變量的執行順序是依據什麼機制?

圖片說明
圖片說明

代碼的執行不是應該和寫的順序無關嗎 但是為什麼構造塊和成員變量的順序不一樣,執行的結果也不一樣呢???

求大神解答

最佳回答:


你的理解是有誤的,成員變量的初始化值跟代碼順序有一定關系的。java創建對象時,對實例變量即類的非靜態成員的初始化,主要在三個地方
1 成員變量定義時指定初始值
2 非靜態代碼塊中指定初始值
3 構造函數中對成員變量指定初值值
這三種方式1,2執行先於構造函數3的執行,但是1,2方式的執行順序與源程序中的排列順序相同。
分析你的兩段代碼,由於你沒有在構造函數中初始化成員變量,所以成員變量a的值主要由1、2在代碼中的位置決定。第一段代碼,非靜態代碼塊的賦值在後面,所以覆蓋了a=10,最終值為100;第二段代碼,成員變量定義時初始化代碼在後面,所以最終結果是10。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved