java编译优化

#java编译器对`String常量表达式`的优化:
 - 1.String+String 可以被编译器识别为常量表达         

             String a="ab" ;       

             String b="a"+"b";//编译后:b="ab"

           System.out.println(a==b);//true           

           分析: 
            编译器将"a"+"b"当做常量表达式,在编译时期进行优化,直接取"ab". 在运行时期 
            并没有创建新的对象,而是从jvm字符串常量池中获取之前已经存在的"ab"对象.

2.String+基本类型 可以被编译器识别为常量表达式
   
           String a="a1";
           String b="a"+1; //"a1"
           String c="a"+true;//"atrue"
           String d="a"+3.14;//"a3.14"           
      
 #java编译器对`常量`优化:
  * 它是编译时的一项优化技术,将代码的常量计算在编译期完成,节约了运行时的计算量.
  
         1.常量替换
            //编译前:
            final int x=10;
            int  y=x;

            //编译后
            int x=10;
            int y=10;//编译时,常量替换了
      
       
        2.数学恒等式的模式匹配替换
 
            //编译前:
             int x=10+10;

            //编译后
            int x=20;//编译时,模式匹配替换了
           
      
         3.常量折叠
 
            //编译前:
             boolean flag=true||(a || b && c);

            //编译后
            boolean flag=true;//编译时,常量折叠了
           
      



  

posted @ 2017-08-10 22:56  scwyfy  阅读(1104)  评论(0编辑  收藏  举报