多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

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

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

學習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!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲伊人久久大香线蕉苏妲己 | 波多野结衣视频在线观看 | 久久亚洲不卡一区二区 | 女人l8毛片a一级毛片免费 | 欧美一级成人毛片视频 | 精品一区二区三区在线视频 | 波多野结衣免费线在线 | 成人久久久久 | 精品福利一区 | 久久国产精品高清一区二区三区 | 国产成人高清亚洲一区91 | 欧洲精品一区二区三区在线观看 | 精品一区二区三区四区五区 | 国产精品亚洲高清一区二区 | 亚洲欧美自拍一区 | 亚洲欧美中文字幕高清在线一 | 1区2区3区 | 亚洲国产二区三区久久 | 欧美人xxxx另类 | 午夜在线播放免费人成无 | 欧美亚洲国产一区二区三区 | 另类图片另类小说 | 日韩欧美精品在线 | 夜性影院 | 中文亚洲动漫精品 | h视频在线观看免费 | 亚洲国产一区二区三区最新 | 夜夜影院未满十八勿进 | 国产亚洲在线观看 | 大陆60老妇xxxxhd | 国产精品_国产精品_国产精品 | 午夜欧美日韩 | 看片亚洲 | 亚洲精品成人图区 | 最近中文字幕mv免费高清视频7 | 伊人亚洲综合网成人 | 亚洲精品久久久久综合91 | 欧美人与动人物姣配xxxx | 国产免费一区二区三区在线 | 综合五月 | 高清不卡一区二区三区 |