java 編譯期常量

來源:互聯網
上載者:User

標籤:integer   輸出   pac   class   out   運行時   運行   bool   注釋   

  今天在看書的時候遇到了一個不是很懂的名詞,是在think in java 這本書的第七章講final關鍵字時講到的。然後自己在網上查了一下知道了一些。

  編譯器常量就是:它的值在編譯期就可以確定的常量。也就是說在編譯的時候就已經為用到這些常量的地方賦好值了。下邊這段程式可以很好地協助我們找出哪些是編譯期常量哪些不是。

package com.wenge.compileTest;public class CompileTest{    public static void main(String args[]){//        System.out.println(Data.i1);//        System.out.println(Data.i2);//initialization!//        System.out.println(Data.b1);//initialization!//        System.out.println(Data.b2);//        System.out.println(Data.s1);//        System.out.println(Data.s2);//initialization!//        System.out.println(Data.a); //initialization! //        System.out.println(Data.e); //initialization!            }}class Data{  static{      System.out.println("initialization!");  }  public static final int i1 = 0;  public static final Integer i2 = 0;  public static final Boolean b1 = true;  public static final boolean b2 = true;  public static final String s1 = "0";  public static final String s2 = new String("0");  public static final A a = new A();  public static final Enum e = E.A;}class A{ }enum E {    A,B,C,D,E,F,G;}

  我們在main方法中一次只輸出一個資料,其餘的注釋掉,然後我們可以通過看控制台有沒有輸出"initialization!"而判斷輸出的常量的類型是不是編譯期常量。因為"initialization!"是寫在靜態代碼塊裡的,所以如果只要CompileTest類的main方法用到Data類裡的屬性Data類裡的靜態代碼塊就會被執行從而輸出"initialization!"。
然後單獨運行時是否輸出"initialization!"已經在後邊注釋了。(有注釋的就說明輸出了)所以很容易可以從輸出結果中得到結論:java中的編譯期常量包括java八大基本類型和直接聲明的string類型。什麼是直接聲明的string類型呢?就是沒有通過new關鍵字聲明的字串(String str = "abc";)。

  當然了常量的前提是有final關鍵字修飾。

 

java 編譯期常量

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.