String编译器优化问题
public class fourtest {
public static final String i = "b";
public static void main(String args[]) {
String b = "ab";
String a = "a" + i;
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
输出 true, ture。 这个结果是编译器优化的结果。
public class fourtest {
public static final String i = null;
public static void main(String args[]) {
String b = "anull";
String a = "a" + i;
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
输出 false ,true。 这个时候为啥不是true,true。
------解决方案--------------------
这种问题,你用jd-gui反编译一下生成的class文件就明白了
------解决方案--------------------
这种问题,你用jd-gui反编译一下生成的class文件就明白了