自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對于Java類加載過程中的順序問題探究

開發(fā) 后端
以前記得static代碼塊貌似是Java類加載過程中優(yōu)先級最高的,但是最近幾天寫代碼發(fā)現(xiàn)不是這樣的,因?yàn)閟tatic變量的優(yōu)先級要比static代碼塊高得多,所以因此我犯了不少錯(cuò)誤。

以前記得static代碼塊貌似是Java類加載過程中優(yōu)先級最高的,但是最近幾天寫代碼發(fā)現(xiàn)不是這樣的,因?yàn)閟tatic變量的優(yōu)先級要比static代碼塊高得多,所以因此我犯了不少錯(cuò)誤,下面以一個(gè)例子來說明一下一個(gè)類初始化為對象的時(shí)候的加載過程:

  1. package com.bird.jdbc;  
  2.  
  3.  
  4. public class Test {  
  5.       
  6.       
  7.     private static A a = new A();  
  8.     private final static F f= new F();  
  9.     private B b = new B();  
  10.       
  11.     static{  
  12.         System.out.println("c");  
  13.     }  
  14.       
  15.     public Test(){  
  16.         System.out.println("Test");  
  17.     }  
  18.       
  19.     public static void main(String[] args){  
  20. //      Test t = new Test();  
  21.         try {  
  22.             Class.forName("com.bird.jdbc.Test");  
  23.         } catch (ClassNotFoundException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  
  28. }  
  29.  
  30. class A{  
  31.     public A(){  
  32.         System.out.println("A");  
  33.     }  
  34. }  
  35.  
  36. class B{  
  37.     public B(){  
  38.         System.out.println("B");  
  39.     }  
  40. }  
  41.  
  42.  
  43. class F{  
  44.     public F(){  
  45.         System.out.println("F");  
  46.     }  

大家可以看到,直接運(yùn)行Test t = new test();這句話,運(yùn)行結(jié)果為

  1. A  
  2. F  
  3. c  
  4. B  
  5. Test 

所以是先static變量,然后是static的代碼塊,然后才是普通變量,最后是構(gòu)造函數(shù)

如果是運(yùn)行Class.forName()函數(shù)的話,運(yùn)行結(jié)果為

  1. A  
  2. F  

還是這樣,先是static變量,然后才是static代碼塊,所以那種對于class.Forname加載類,只調(diào)用static代碼塊的誤區(qū)要克服,因?yàn)檫€有一個(gè)static代碼塊在等著你,呵呵,我得記錄下來以示警戒。

原文鏈接:http://blog.csdn.net/a352193394/article/details/7255277

【編輯推薦】

  1. Java多線程之消費(fèi)者生產(chǎn)者模式
  2. 深入理解Java對象序列化
  3. JavaScript繼承詳解
  4. Java自定義范型的應(yīng)用技巧
  5. Java中Class對象詳解
責(zé)任編輯:林師授 來源: a352193394的博客
相關(guān)推薦

2024-06-24 14:52:50

Android類加載器

2010-09-27 13:45:38

2013-05-08 09:14:35

網(wǎng)絡(luò)維護(hù)網(wǎng)吧網(wǎng)管

2010-01-04 18:25:24

Ubuntu Auda

2013-09-03 13:01:01

團(tuán)隊(duì)管理團(tuán)隊(duì)

2021-12-24 10:17:54

Java數(shù)據(jù)時(shí)間戳

2016-03-23 11:03:40

2012-11-06 10:19:18

Java自定義加載Java類

2010-05-11 18:05:50

MySQL 5安裝

2009-06-17 14:33:08

java項(xiàng)目開發(fā)

2010-07-12 13:00:49

UML建模

2010-05-05 11:06:32

Oracle存儲過程

2012-03-13 13:38:42

Java

2015-09-10 09:55:36

移動web開發(fā)問題

2009-12-10 14:19:41

配置靜態(tài)路由

2021-08-05 15:36:34

NFV網(wǎng)絡(luò)設(shè)備

2015-09-10 13:13:42

D-Future

2009-08-30 12:18:26

局域網(wǎng)建設(shè)綜合布線

2009-10-14 09:27:15

結(jié)構(gòu)化綜合布線

2023-12-12 11:27:58

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號