成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java類變量和成員變量初始化過程

開發 后端
昨天看了一本叫做《突破程序員基本功的16課》的書,個人感覺還可以,主要對Java的技巧進行了一些深入的講解,讓我對類的初始化和對象的創建有了新的認識。下面來詳細的看看

昨天看了一本叫做《突破程序員基本功的16課》的書,個人感覺還可以,主要對Java的技巧進行了一些深入的講解,讓我對類的初始化和對象的創建有了新的認識。

 

一、類的初始化

對于類的初始化:類的初始化一般只初始化一次,類的初始化主要是初始化靜態成員變量。

類的編譯決定了類的初始化過程。

編譯器生成的class文件主要對定義在源文件中的類進行了如下的更改:

1) 先按照靜態成員變量的定義順序在類內部聲明成員變量。

2) 再按照原java類中對成員變量的初始化順序進行初始化。

一個java類和編譯后的class對應的轉換如下:

源文件:

  1. public class Person{  
  2.   public static String name="張三";  
  3.   public static int age;  
  4.   static{  
  5.        age=20;  
  6.     System.out.println("初始化age");  
  7.   }  
  8.   public static String address;  
  9.   static{  
  10.     address="北京市";  
  11.     age=34;  
  12.   }  
  13.   public static void main(String[] args) {  
  14.                    System.out.println(name);  
  15.                    System.out.println(age);  
  16.                    System.out.println(address);  
  17.          }  

當java源代碼轉換成一個class文件后,其轉換成類似下面的代碼:

  1. public class Person{  
  2.   public static String name;  
  3.   public static int age;  
  4.   public static String address;  
  5.   static{  
  6.     name="張三";  
  7.     age=20;  
  8.     System.out.println("初始化age");  
  9.     address="北京市";  
  10.     age=34;  
  11.   }  
  12.   public static void main(String[] args) {  
  13.                    System.out.println(name);  
  14.                    System.out.println(age);  
  15.                    System.out.println(address);  
  16.          }  

初始化順序依據轉換后對應的class類成員變量的初始化順序依次執行,所以所有的靜態成員變量都是先聲明,后執行賦值的,而且賦值的順序也是依照源代碼對靜態成員變量初始化的順序進行的,注意:定義一個成員變量并直接初始化與在靜態代碼塊中進行初始化是等價的,都是依據它們在源代碼中定義的順序進行的。

 

二、對象的生成

對于對象的生成其初始化過程與類的初始化過程類似,但會增加構造函數階段,源代碼如下:

  1. public class Person{  
  2.    {  
  3.      name="李四";  
  4.      age=56;  
  5.      System.out.println("初始化age");  
  6.      address="上海";  
  7.    }  
  8.    public String name="張三";  
  9.    public int age=29;  
  10.    public String address="北京市";  
  11.    public Person(){  
  12.      name="趙六";  
  13.      age=23;  
  14.      address="上海市";  
  15.    }  
  16.  } 

編譯器轉換成class文件后,會轉換成類似下面的代碼:

  1. public class Person{  
  2.    public String name;  
  3.    public int age;  
  4.    public String address;  
  5.    public Person(){  
  6.      name="李四";  
  7.      age=56;  
  8.      System.out.println("初始化age");  
  9.      address="上海";  
  10.      name="張三";  
  11.      age=29;  
  12.      address="北京市";  
  13.      name="趙六";  
  14.      age=23;  
  15.      address="上海市";  
  16.    }  
  17.  } 

可以看到,對于類中對成員變量的初始化和代碼塊中的代碼全部都挪到了構造函數中,并且是按照java源文件的初始化順序依次對成員變量進行初始化的,而原構造函數中的代碼則移到了構造函數的***執行。本人以前一直對類初始化過程一直沒有一個深刻的理解,就是搞不清到底是怎么初始化的,只能按照書上所說的記住了初始化順序,但是過一段時間有給忘了,所以這次總算給弄清楚了,還是按照一個模型來解釋初始化機制比較好啊,不用再背了,只有理解了才能不易忘。

原文鏈接:http://www.cnblogs.com/lmtoo/archive/2012/04/08/2437918.html

【編輯推薦】

  1. JavaScript表格組件加載速度測試
  2. 5個讓人激動的Java項目
  3. Java并行編程:從并行任務集獲取反饋
  4. Java反射機制初探
  5. 不再糾結Java中的String類
責任編輯:林師授 來源: lmtoo的博客
相關推薦

2021-04-01 10:01:55

JavaStringJava基礎

2023-12-04 10:57:52

函數C++

2012-03-13 13:38:42

Java

2010-02-24 15:41:19

Linux Light

2023-10-06 20:57:52

C++聚合成員

2021-12-26 00:08:35

C++初始化列表

2012-02-28 10:04:09

Java

2010-02-03 11:01:18

C++類靜態成員初始化

2009-08-31 09:47:22

C#靜態變量初始化

2009-08-31 10:38:34

C#變量初始化

2010-01-22 13:16:05

VB.NET初始化數組

2023-05-08 15:55:16

MySQL數據庫

2012-05-23 12:46:53

JavaJava類

2011-07-22 17:46:43

java

2009-08-31 10:30:29

C#變量初始化

2024-08-26 15:06:20

2021-03-30 11:55:15

內核源碼宏定義Linux

2013-03-04 11:10:03

JavaJVM

2021-04-07 08:03:51

js舉起Hoisting初始化

2023-08-28 07:25:58

DDE服務器管理器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99在线资源 | 日日噜噜噜夜夜爽爽狠狠视频97 | 九九精品在线 | 日韩精品久久久久 | 日韩在线 | 精品欧美一区二区三区久久久小说 | 在线精品国产 | 亚洲欧洲成人av每日更新 | 天堂中文字幕av | 麻豆一区二区三区精品视频 | 亚洲视频三 | 精品二区 | 日本午夜网 | 在线观看成人 | 久久在线 | 久久久激情 | 一级做a爰片久久毛片免费看 | 色综合久 | 日韩电影免费在线观看中文字幕 | 美女福利视频一区 | 亚洲国产欧美日韩 | 伊人久久伊人 | 99热这里都是精品 | 欧美久久久久 | 欧美视频精品 | 亚洲成人免费视频在线观看 | 欧美老少妇一级特黄一片 | 欧美精品一二区 | 欧美精品网站 | 欧美激情在线精品一区二区三区 | 国产一区二区电影 | 在线观看成人小视频 | 国产午夜精品久久久久免费视高清 | 国产精品视频一区二区三区 | 成人一区二区三区 | 欧美成人aaa级毛片在线视频 | 国精产品一品二品国精在线观看 | av一级久久 | 中文字幕高清免费日韩视频在线 | 黄网站免费在线观看 | 91观看 |