日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Java類變量和成員變量初始化過程

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

來源:程序員人生   發布時間:2017-03-21 08:22:58 閱讀次數:4784次

學習Java的同學注意了!??! 
學習進程中遇到甚么問題或想獲得學習資源的話,歡迎加入Java學習交換群,群號碼:183993990  我們1起學Java!


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

 

1、類的初始化

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

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

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

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

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

1個java類和編譯后的class對應的轉換以下:

源文件:

復制代碼
public class Person{
  public static String name="張3";
  public static int age;
  static{
age=20;
    System.out.println("初始化age");
  }
  public static String address;
  static{
    address="北京市";
    age=34;
  }
  public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}
復制代碼

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

復制代碼
public class Person{
  public static String name;
  public static int age;
  public static String address;
  static{
    name="張3";
    age=20;
    System.out.println("初始化age");
    address="北京市";
    age=34;
  }
  public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}
復制代碼

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

 

2、對象的生成

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

復制代碼
 1 public class Person{
2   {
3     name="李4";
4     age=56;
5     System.out.println("初始化age");
6     address="上海";
7   }
8   public String name="張3";
9   public int age=29;
10   public String address="北京市";
11   public Person(){
12     name="趙6";
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="李4";
7     age=56;
8     System.out.println("初始化age");
9     address="上海";
10     name="張3";
11     age=29;
12     address="北京市";
13     name="趙6";
14     age=23;
15     address="上海市";
16   }
17 }
復制代碼

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

學習Java的同學注意了?。?! 
學習進程中遇到甚么問題或想獲得學習資源的話,歡迎加入Java學習交換群,群號碼:183993990  我們1起學Java!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲色图15p | 午夜免费视频 | 精品成人一区二区三区 | 日本 欧美 在线 | 国产伦精品一区二区三区免费视频 | 午夜三级在线观看 | 国产视频二区 | 精品国产乱码久久久久久闺蜜 | 欧美精品在线一区二区三区 | 精品国产一区二区三区麻豆小说 | 天堂网在线视频 | 亚洲欧美日韩精品 | 成人免费视频一区二区 | 爱爱视频在线观看 | 亚洲大片在线观看 | 男女免费视频 | 国精产品一区二区三区 | 国产高清av免费观看 | 久久99精品久久久久久秒播放器 | 久久噜噜 | 最近中文字幕在线视频 | a级毛片毛片免费很很综合 91久久 | 国产一区二区三区四区五区tv | 成人久久网 | 日韩国产综合 | av在线一区二区三区 | 成年人免费在线视频 | 美女精品一区 | 精品国产乱码一区二区三区 | 日韩不卡一区 | 在线播放国产精品 | 欧美成人三区 | 亚洲区一 | 一区免费观看 | 国产精品久久久久久久久久 | 欧美群妇大交群中文字幕 | 美女视频一区二区三区 | 91网页入口 | 精品国产一区二区三区四区四 | 成人污视频在线观看 | 欧美日韩精品一区二区三区四区 |