StringBuilder的deleteCharAt方法不生效?代码未删首字符问题咨询
问题解答
先看你的代码:
String s = "world"; StringBuilder str = new StringBuilder(s); str.deleteCharAt(0); System.out.println(s);
你之所以看到输出还是world,核心原因是Java里的String是不可变对象,而StringBuilder是一个独立的可变字符序列对象——你用s初始化str的时候,只是把s的内容复制到了str里,两者根本不是同一个对象!
打个比方:你把一份文档复印了一份,然后在复印件上改内容,原来的文档当然不会有任何变化啦😉
你修改的是str这个StringBuilder对象里的内容,但最后打印的却是原来的String对象s,所以看不到修改效果。
想要看到删除第一个字符后的结果,你有两种办法:
- 直接打印
str对象:System.out.println(str);,这样输出就是orld - 把
str的内容转回String赋值给s,再打印s:s = str.toString(); System.out.println(s);
内容的提问来源于stack exchange,提问作者Heythem
相关产品推荐
相关产品推荐

