Rol*_*all 1 java string stringbuilder charsequence
为什么以下代码将产生一个很好的ClassCastException:
public static void main(String []args){
StringBuilder s1 = new StringBuilder("quaqua");
StringBuilder s12= (StringBuilder)s1.subSequence(0,3);
System.out.println(s12);
}
Run Code Online (Sandbox Code Playgroud)
而以下代码(用String替换StringBuilder):
public static void main(String []args){
String s1 = new String("quaqua");
String s12= (String)s1.subSequence(0,3);
System.out.println(s12);
}
Run Code Online (Sandbox Code Playgroud)
工作良好?;
我知道有方法substring(int begin, int end);然而我只是好奇为什么使用StringBuilder(实现CharSequence)的强制转换不起作用而使用String工作.
提前致谢.
这是因为StringBuilder.subSequence返回的实际类是String:
...
public CharSequence subSequence(int start, int end) {
return substring(start, end);
}
public String substring(int start, int end) {
...
return new String(value, start, end - start);
}
Run Code Online (Sandbox Code Playgroud)
您不能将String强制转换为StringBuilder.
| 归档时间: |
|
| 查看次数: |
445 次 |
| 最近记录: |