麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

Java類變量和成員變量初始化過程的應(yīng)用介紹

2019-11-26 16:10:20
字體:
供稿:網(wǎng)友

一、類的初始化

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

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

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

1)       先按照靜態(tài)成員變量的定義順序在類內(nèi)部聲明成員變量。

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

一個java類和編譯后的class對應(yīng)的轉(zhuǎn)換如下:

源文件:

復制代碼 代碼如下:

public class Person{
  public static String name="張三";
  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源代碼轉(zhuǎn)換成一個class文件后,其轉(zhuǎn)換成類似下面的代碼:
復制代碼 代碼如下:

public class Person{
  public static String name;
  public static int age;
  public static String address;
  static{
    name="張三";
    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);
         }
}

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


二、對象的生成

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

復制代碼 代碼如下:

public class Person{
   {
     name="李四";
     age=56;
     System.out.println("初始化age");
     address="上海";
   }
   public String name="張三";
   public int age=29;
   public String address="北京市";
   public Person(){
     name="趙六";
     age=23;
     address="上海市";
   }
 }

編譯器轉(zhuǎn)換成class文件后,會轉(zhuǎn)換成類似下面的代碼:
復制代碼 代碼如下:

public class Person{
   public String name;
   public int age;
   public String address;
   public Person(){
     name="李四";
     age=56;
     System.out.println("初始化age");
     address="上海";
     name="張三";
     age=29;
     address="北京市";
     name="趙六";
     age=23;
     address="上海市";
   }
 }

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久av69精品 | 日本一区二区不卡高清 | 精品亚洲va在线va天堂资源站 | 欧美视频一区二区三区 | 久久久久久久久久久亚洲 | 日本网站一区二区三区 | 黄色免费不卡视频 | 日本在线看 | 日本欧美在线播放 | 久久精品视频16 | 澳门一级淫片免费视频 | 久草在线新时代视觉 | 一级免费黄色免费片 | 一本色道久久综合亚洲精品图片 | 精品亚洲在线 | 国产资源在线免费观看 | 福利免费在线观看 | 美国av免费看| 日韩黄色成人 | 在线免费日韩 | 国产精品久久久久久久久久东京 | av在线播放免费 | 久久久www视频 | 看免费一级毛片 | 国产精品久久久久久久不卡 | 91av在线免费 | 免费日本一区二区 | 黄色网战入口 | 天天躁狠狠躁夜躁2020挡不住 | teensexhd| 91羞羞 | 亚洲成人夜色 | 最新av在线免费观看 | 精品999久久久| xx53xx| 国产精品久久久久久久久久10秀 | 一级大片久久 | 国产精品久久久久久久久久久久久久久久 | 精品一区二区免费 | 国产亚洲精品久久久久久久久 | 99精品视频免费看 |