Java的源碼執行(建議結合Javase語法學習來加深印象)

一、源碼執行時的先後順序:

  • 父類的靜態屬性和靜態塊(按照聲明順序)
  • 本類的靜態屬性和靜態塊(按照聲明順序)
  • main方法
  • 父類的成員屬性和成員塊(按照聲明順序)
  • 父類構造器
  • 本類成員屬性和塊(按照聲明順序)
  • 本類構造器

二、源碼執行需要注意:

  • 在類載入的時候,靜態方法也已經載入了,但必須要通過類名或者對象名才能訪問(相比於靜態程式碼塊,靜態程式碼塊是主動運行的,靜態方法是被動運行的)
  • 當靜態載入中遇到需要載入非靜態的情況: 先載入非靜態再載入靜態(因為非靜態可以訪問靜態,而靜態不能訪問非靜態)
  • 靜態程式碼塊不能存在在任何方法體中
  • 靜態程式碼塊在類載入的時候就要運行
  • 靜態程式碼塊不能訪問成員屬性
  • 靜態方法,實例方法只有在調用的時候才會去執行
  • 成員屬性只能通過對象來調用,不能放在靜態程式碼塊中
  • 成員方法是通過載入類,然後new出實例化對象;通過對象運行這個方法

 

Tags: