String test=null;
test+="abc";
System.out.println(test);
if(null==test)
{
System.out.println("enter");
}以上代码会输出:
nullabc
enter
String test=null;
test=test+"abc";
System.out.println(test);
if(null==test)
{
System.out.println("enter");
}以上代码会输出:
nullabc
求助为什么会这样,反编译发现编译时对编译器test+="abc"和null==test做了的优化,我想知道编译器优化的原理的是什么?导致上面两个例子的输出结果不一样。
PS:编译器用的eclipse。
jdk 1.6
test+="abc";
System.out.println(test);
if(null==test||test.length==0)
{
System.out.println("enter");
}
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
jdk版本:java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)两端程序运行结果都是nullabc不知道楼主的问题出在哪里了?我也搞不懂。只能提供我的运行信息供楼主参考了。