1. 程式人生 > >Final和Static及程式執行順序

Final和Static及程式執行順序

final:
final可以用來修飾:類、屬性和方法
用於修飾類:表示該類不可以被繼承
用於修飾屬性:表示該屬性不可以被修改
用於修飾方法:表示該方法不可以被重寫
但是,final不可以用於修飾介面和抽象類




static
static可以用作修飾:類、屬性、方法、程式碼塊
用於修飾類:普通類不允許宣告為靜態的,只有內部類才可以。被static修飾的內部類可以直接作為
   一個普通類來使用。而不需要例項一個外部類
用於修飾屬性:表示該屬性為類屬性,表示該類的物件共享的一個屬性(共享一塊記憶體空間)
     類屬性儘量用類名直接呼叫
用於修飾方法:靜態方法可以直接用類名呼叫,但是靜態方法裡只能呼叫靜態的屬性
     所以在靜態方法裡不可以用到super和this。
用於修飾程式碼塊:是在類中獨立於類成員的static語句塊,可以有多個,位置可以隨便放,它
不在任何方法體內,JVM載入類時會執行這些靜態的程式碼塊,如果static程式碼塊有多個
,JVM將按照他們在類中出現的順序先後以及執行


關於Java程式的裝載過程
虛擬機器{
JRE =JVM+JavaAPI
}
第一步:啟動JVM
第二部:將用到的.class檔案(Java可執行檔案—)裝載到Java虛擬機器內
在裝載的過程中靜態的屬性和靜態的程式碼塊會依次執行,static方法會在被呼叫時執行
第三步:JVM開始呼叫主函式
當建立一個類的物件的時候,首先執行非靜態的程式碼塊和非靜態的屬性,依次執行
非靜態的方法會被載入到方法區
然後執行構造方法

Java程式載入順序:static屬性/static程式碼塊(從上至下按順序執行)--》主函式--》成員屬性/非靜態程式碼塊--》
構造方法

相關推薦

FinalStatic程式執行順序

final:final可以用來修飾:類、屬性和方法用於修飾類:表示該類不可以被繼承用於修飾屬性:表示該屬性不可以被修改用於修飾方法:表示該方法不可以被重寫但是,final不可以用於修飾介面和抽象類 staticstatic可以用作修飾:類、屬性、方法、程式碼塊用於修飾類:普

解釋一下staticstatic變數的執行順序

static {     name="zhangsan"; } private static String

深入瞭解類載入過程Java程式執行順序

/** * @author chris * @date 2018/10/30 - 15:24 * 類載入執行順序: * 1.靜態屬性,靜態方法宣告,靜態塊。 * * 2.動態屬性,普通方法宣告,構造塊。 * * 3.構造方法。 * * 當new一個物件時,此時會呼叫構造方法,但是在呼叫構造方法之前,(除非被打

Java多執行緒中的finalstatic

看Android的多執行緒發現其實是Java的多執行緒。我找了一本Java程式設計思想學習Java的併發機制。寫了一個demo,遇到一些問題,雖然最後想明白了,但是也暴露了我的Java基礎差勁的事實。之後我會通過寫部落格的方式來提高Java水平。現在說一下我的問

UIViewController的生命週期iOS程式執行順序

當一個檢視控制器被建立,並在螢幕上顯示的時候。 程式碼的執行順序 1、 alloc                                   建立物件,分配空間 2、init (initWithNibName) 初始化物件,初始化資料 3、loadView                    

static建構函式的執行順序

public class OrderTest { public static void main(String[] args) { /* * 結果: parent static block Chi

標籤href屬性onclick()執行順序點選兩次才跳轉

今天寫一個小demo時,發現正常點選連結不跳轉,只有連續點選兩次才會跳轉,程式碼很簡單,如下: <a href="" onclick="queryStudent()">查詢</a>因為太簡單了,也因為知道onclick()的執行順序在href之前

Java基礎之finalstatic關鍵字

推薦 構造方法 其他 如果 靈活 位置 map 機制 lis 一、final 根據程序上下文環境,它可以修飾非抽象類、非抽象類成員方法和變量。 final類不能被繼承,沒有子類,final類中的方法默認是final的。 final

主線程子線程執行順序問題

執行 他會 debug @override args stat 明顯 輸出 被調用 public class MyThread implements Runnable { @Override public void run() { Syst

finalstatic

由於 ddp args 強調 vps extend 特性 ict 適用於 final定義的變量可以看做一個常量,不能被改變; final定義的方法不能被覆蓋; final定義的類不能被繼承。 final static 就是再加上static的特性就可以了static 和fi

Java關鍵字finalstatic的作用

++ 修改 AS apr super關鍵字 存在 回收 TP javap 一、關鍵字final final修飾類:這個類就不能被繼承 final修飾方法:不能被重寫 final修飾屬性:此屬性就是一個常量,一旦初始化後,不可再被賦值。習慣上,

java多線程04----------finalstatic

底層 java多線 成員 機制 stat 同步 字段 數據 發布 final和static關鍵字 final關鍵字   1.final關鍵字在單線程中的特點:        1)final修飾的靜態成員:必須在進行顯示初始化或靜態代碼塊賦值,並且僅能賦值一次。    2)f

第九天(上) finalstatic關鍵字

結果 需要 println 使用 trac 非靜態變量 地理 成員變量 tex 繼承的出現提高了代碼的復用性,方便開發,是多態的前提,但隨之而來的也有問題,有些累在描述後不想被繼承,或者裏面的方法功能時固定的,不想讓子類重寫,可子類繼承之後又可以重寫該怎麽辦呢這個時候就需要

深入理解Java程式執行順序

下面將從一道阿里巴巴試題詳細分析Java程式執行順序。 阿里巴巴試題 public class Test { public static int k = 0; public static Test t1 = new Test("t1"); public static Test t

java程式執行順序理解

  public class StaticTest { public static int k = 0; public static StaticTest t1 = new StaticTest("t1"); public static StaticTest t2 =

MySQL SQL 多個Join on(表連線) Where間的執行順序(nest loop join機制)【轉】

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_27529917/article/details/78447882 在mysql中,多表連線採用nest loop join,即迴圈巢狀連

關於sqlMySQL的語句執行順序

sql和mysql執行順序,發現內部機制是一樣的。最大區別是在別名的引用上。  一、sql執行順序  (1) from (3) join (2) on (4) where (5) group by(開始使用select中的別名,後面的語句中都可以使用) (6) avg,s

Java中的初始化塊構造器的執行順序

我們都知道java中不但有構造器,還有初始化塊和靜態初始化塊的概念,今天我們就來看看他們之間的執行順序是怎樣的。 我們來看一個例子: package test; class Root { static { System.out.println("Root的靜態初始化塊"); }

面向物件中的finalstatic關鍵字特點總結

1 final的特點 1.1 final修飾類不可以被繼承,但是可以繼承其他類。 class Yy {} final class Fu extends Yy{} //可以繼承Yy類 class Zi extends Fu{} /

java中子類繼承父類程式執行順序問題

測試程式碼: package test; public class FatherTest { private String name; public FatherTest(){ System.out.println("--父類的無參建構函式--"); } public