1. 程式人生 > 實用技巧 >Java程式碼執行順序

Java程式碼執行順序

 1 package com.cn.donleo.test;
 2 
 3 /**
 4  * @author liangd
 5  * date 2020-10-20 15:23
 6  * code 程式碼執行順序測試
 7  */
 8 public class TestCodeSequence {
 9     /*
10      * 靜態程式碼塊,類變數(靜態變數),可以向前引用(即引用,再定義)
11      */
12     static {
13         username = "liangd1234";
14         System.out.println("執行靜態程式碼塊");
15 } 16 17 /* 18 * 類變數(靜態變數),再類初始化之前初始化,無論類的例項被建立多少個,凡是被static修飾符修飾的, 19 * 都將按照順序執行,所以輸出的是liangd,而不是liangd1234 20 */ 21 22 /** 23 * 類變數(靜態變數) 24 */ 25 public static String username = "liangd"; 26 27 /** 28 * 例項變數(非靜態變數),定義時被賦予初始值,會比在構造器賦予值更早執行 29 */
30 private String phone = "18090287931"; 31 32 /* 33 非靜態程式碼塊 實際上,非靜態程式碼塊在類初始化建立例項時,將會被提取到類的構造器中, 34 但是,非靜態程式碼塊會比構造器中的程式碼塊優先被執行, 35 所以phone輸出的值是構造器中定義的值,不是非靜態程式碼塊的值,更不是初始值。 36 */ 37 { 38 phone = "liangd18090287931"; 39 System.out.println("執行程式碼塊");
40 } 41 42 /** 43 * 構造方法 44 */ 45 private TestCodeSequence() { 46 phone = "15982600186"; 47 System.out.println("執行構造方法"); 48 } 49 50 public static void main(String[] args) { 51 TestCodeSequence testCodeSequence = new TestCodeSequence(); 52 System.out.println(username); 53 System.out.println(testCodeSequence.phone); 54 } 55 56 }