潇湘沐
#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;//编译时,常量折叠了