String s1=null;
String s2=null;
String s3=s1+s2;
System.out.println(s3);
运行以上代码段后,发现结果竟然是 nullnull ;
使用 "nullnull".equals(s3) 进行判断,发现结果为ture
使用 javap -verbose 文件名(不带后缀名) 命令查看编译后的class字节码文件后就会发现,Java会对String类型相加会进行优化,相当于实例化一个StringBuilder然后调用StringBuilder的append(String)方法。
StringBuilder 类下的 append(String)源码:
接下来看 super.append(str) 的部分源码:
接着看 appendNull() 源码:
看完这些源代码,我们就不难而知为什么结果是nullnull了。