String reg="\\b";
String str2="ddd ssss";
String[]strs=str2.split(reg);//[ddd sss]3个字符串
System.out.println(strs[1]==" ");//false
String str3=" ";
String str=str3+"";
String str1="";
System.out.println(str==" ");//false----1
System.out.println(str.equals(" "));//true
System.out.println(str.equals(""));//false
System.out.println(str=="");//false
System.out.println("-----------");
System.out.println(str1=="");//true
System.out.println(str1.equals(""));//true
如果你接着测试
str=" ";
str==" "打印出师true
那为什么1处打印出为false 但equals是true呢?
String s3 = (new StringBuilder()).append(s2).append("").toString();
这要想到常量池!常量池是在编译时期确定的!但这里Str3+""是在运行时创建的String对象!所以不存在常量池中!
和这个应该一样
String ostr1="b";
String ostr2="a"+ostr1;
产生的字节码是翻译过来就是
String s1 = "b";
String s2 = (new StringBuilder()).append("a").append(s1).toString();
可以看出和“ab”对象完全不一样!