Gau*_*rav 4 java stringbuilder compiler-optimization
这是一些简单的Java代码:
String s = new StringBuilder().append("a").append("b").append("c").toString();
Run Code Online (Sandbox Code Playgroud)
我用JRE 1.6编译它,我在反编译的类文件中观察到以下内容:
String s = "a" + "b" + "c";
Run Code Online (Sandbox Code Playgroud)
根据这个观察我有以下问题:
Oli*_*rth 17
反过来说. +for String是在幕后使用StringBuilder(或StringBuffer)实现的(参见http://docs.oracle.com/javase/7/docs/api/java/lang/String.html或http://docs.oracle.com/javase/ specs/jls/se8/html/jls-15.html#jls-15.18.1).
因此,一旦编译完成,您的两个代码片段就难以区分.反编译器必须猜测原始形式.