語(yǔ)法糖(Syntactic Sugar)

語(yǔ)法糖(Syntactic Sugar),也叫糖衣語(yǔ)法,是英國(guó)計(jì)算機(jī)科學(xué)家彼得·約翰·蘭達(dá)(Peter J. Landin)發(fā)明的一個(gè)術(shù)語(yǔ)。指的是,在計(jì)算機(jī)語(yǔ)言中添加某種語(yǔ)法,這種語(yǔ)法能使程序員更方便的使用語(yǔ)言開(kāi)發(fā)程序,同時(shí)增強(qiáng)程序代碼的可讀性,避免出錯(cuò)的機(jī)會(huì);但是這種語(yǔ)法對(duì)語(yǔ)言的功能并沒(méi)有影響。

泛型

與C#中的泛型相比,Java的泛型可以算是“偽泛型”了。在C#中,不論是在程序源碼中、在編譯后的中間語(yǔ)言,還是在運(yùn)行期泛型都是真實(shí)存在的。Java則不同,Java的泛型只在源代碼存在,只供編輯器檢查使用,編譯后的字節(jié)碼文件已擦除了泛型類(lèi)型,同時(shí)在必要的地方插入了強(qiáng)制轉(zhuǎn)型的代碼。
源碼:

 private void showLists(){
        List<String> stringList = new ArrayList<String>();
        stringList.add("oliver");
        System.out.println(stringList.get(0));
    }

編譯后:

    private void showLists() {
        ArrayList stringList = new ArrayList();
        stringList.add("oliver");
        System.out.println((String)stringList.get(0));
    }

自動(dòng)拆箱/裝箱

自動(dòng)拆箱/裝箱是在編譯期,依據(jù)代碼的語(yǔ)法,決定是否進(jìn)行拆箱和裝箱動(dòng)作。
裝箱過(guò)程:把基本類(lèi)型用它們對(duì)應(yīng)的包裝類(lèi)型進(jìn)行包裝,使基本類(lèi)型具有對(duì)象特征。
拆箱過(guò)程:與裝箱過(guò)程相反,把包裝類(lèi)型轉(zhuǎn)換成基本類(lèi)型。
需要注意的是:包裝類(lèi)型的“==”運(yùn)算在沒(méi)有遇到算數(shù)運(yùn)算符的情況下不會(huì)自動(dòng)拆箱,而其包裝類(lèi)型的equals()方法不會(huì)處理數(shù)據(jù)類(lèi)型轉(zhuǎn)換:

    public void packing(){
        int a =2 ;
        int b =2;
        System.out.println( a ==b );
    }

==>

    public void packing() {
        byte a = 2; //沒(méi)有拆裝箱
        byte b = 2;
        System.out.println(a == b);
    }

而:

    public void packing(){
        Integer a =2 ;
        Integer b =2;
        System.out.println( a ==b );
    }

==>

    public void packing() {
        Integer a = Integer.valueOf(2); //自動(dòng)裝箱
        Integer b = Integer.valueOf(2);
        System.out.println(a == b);
    }

再;

    public void packing(){
        Long a =2L ;
        long b =2L;
        System.out.println( a + b );
    }

==>

    public void packing() {
        Long a = Long.valueOf(2L); //自動(dòng)裝箱
        long b = 2L;
        System.out.println(a.longValue() + b); //自動(dòng)拆箱
    }

注意:

    public void intTransgfer(){
        int a =2 ;
        String a1 = a+"";
        transfer0(a);
        transfer1(a1);
        System.out.println("now a is " + a);
        System.out.println("now a1 is " + a1);
    }
   private void  transfer0(int a ){
       a = a +1 ;
       System.out.println("transfered a is " + a);
   }
    private void  transfer1(String  a ){
        a = a +1 ;
        System.out.println("transfered a1 is " + a);
    }
transfered a is 3
transfered a1 is 21
now a is 2
now a1 is 2

從上面看出,a和a1并沒(méi)有發(fā)生改變,說(shuō)明a和a1在內(nèi)存中是常量不會(huì)改變的,除非return 重新指定引用地址。要么封裝在一個(gè)對(duì)象中,依靠對(duì)象的引用地址來(lái)獲取新值。

循環(huán)歷遍

    public  void foreachs(){
        List<Integer> list = new ArrayList<Integer>();
        for(Integer num : list){
            System.out.println(num);
        }
    }

==>

    public void foreachs() {
        ArrayList list = new ArrayList();
        Iterator var2 = list.iterator();
        while(var2.hasNext()) {
            Integer num = (Integer)var2.next();
            System.out.println(num);
        }
    }

條件語(yǔ)句

    public  void ifs(){
        if(true){ //永真
            System.out.println("oliver");
        }else{
            System.out.println("lee");
        }
    }

==>

    public void ifs() {
        System.out.println("oliver");
    }

在編譯器中,將會(huì)把分支不成立的代碼消除

枚舉

public enum EnumTest {
    OLIVER,LEE;
}

==>

public enum EnumTest {
    OLIVER,
    LEE;
    private EnumTest() { //添加了構(gòu)造方法
    }
}

內(nèi)部類(lèi)

在jdk8 無(wú)特征..

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 前言 人生苦多,快來(lái) Kotlin ,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類(lèi)型編程...
    任半生囂狂閱讀 26,252評(píng)論 9 118
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,810評(píng)論 25 708
  • 喜歡戴望舒的《雨巷》,不僅僅是因?yàn)椤敖Y(jié)著愁怨的姑娘”,還有那油紙傘下寂靜悠長(zhǎng)、詩(shī)意朦朧的雨巷。 這是一...
    悠悠我心_無(wú)限茶境閱讀 753評(píng)論 7 0
  • 【藝美12寸精裝對(duì)裱冊(cè)】最新反饋,質(zhì)量清晰漂亮做過(guò)的都說(shuō)好[強(qiáng)][強(qiáng)]剛剛收到我們美印照片書(shū)就立馬決定再做兩本,好...
    天易樂(lè)樂(lè)閱讀 289評(píng)論 0 0
  • 2017年3月17日 星期六 晴 ………… 路人甲:“我錯(cuò)了,不應(yīng)該不主動(dòng)找你,求原...
    拾光記憶閱讀 396評(píng)論 0 0