public class Demo234234 {
public static void main(String[] args) {
String s = "aa";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
sb.append("bb");
System.out.println(sb);
sb.substring(s.length());
System.out.println(sb); // Here I expected as "bb", but getting "aabb", why?
System.out.println(sb.substring(s.length()));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
aa
aabb
aabb
bb
Run Code Online (Sandbox Code Playgroud)
我期望该行的输出为“bb” System.out.println(sb);,但结果却为“aabb”,可能知道为什么吗?
sb.append("bb");行为正确,那为什么不呢sb.substring(s.length());?
还有一件事要问:哪个更好用?stringObj.substring() 还是 stringBuilder.substring() ??
在 a 中,StringBuilder该substring(int start)方法返回一个新值String,但不会更改StringBuilder对象本身,因此您应该将其结果保存到 类型的变量中String。
String ss = sb.substring(s.length());
System.out.println(ss);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |