我正在学习SCJP证书,在使用StringBuilder和StringBuffer API时,我发现一些情况我无法理解那里发生了什么.
这是我的示例代码:
StringBuffer sb1 = new StringBuffer("sb1");
StringBuilder sb2 = new StringBuilder("sb2");
StringBuffer sb11 = new StringBuffer(sb1);
StringBuilder sb22 = new StringBuilder(sb2);
StringBuffer sb12 = new StringBuffer(sb2);
StringBuilder sb21 = new StringBuilder(sb1);
System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb11);
System.out.println(sb22);
System.out.println(sb12);
System.out.println(sb21);
System.out.println();
sb1.append("a1");
sb2.append("a2");
System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb11);
System.out.println(sb22);
System.out.println(sb12);
System.out.println(sb21);
Run Code Online (Sandbox Code Playgroud)
这是运行上面代码的结果:
sb1
sb2
sb1
sb2
sb2
sb1
sb1a1
sb2a2
sb1
sb2
sb2
sb1
Run Code Online (Sandbox Code Playgroud)
用于sb11,sb22,sb12和sb21的构造函数未在API中记录.此外,看看结果,似乎对于这4个案例,承认String或CharSequence的构造函数是使用的那个.
如果是,为什么Java会自动转换字符串中的StringBuffer?据我所知,Autoboxing并没有走得那么远.
我错过了什么?