java - StringBuilder deleteCharAt 不起作用
问题描述
String s = "world";
StringBuilder str = new StringBuilder(s);
str.deleteCharAt(0);
System.out.println(s);
此代码输出以下结果:世界,我做错了什么?为什么字符串的第一个字符没有被删除?
解决方案
和您的代码的问题StringBuilder
在于它并不完全符合您的想法。
AStringBuilder
可以将 anyCharSequence
作为构造函数参数,但它不会直接更改传递的值。特别是字符串是不可变的。不管怎样StringBuilder
,不要直接改变 Object 。它们将字符缓冲在char[]
不再不可变的 a 中。
要获取缓冲值(以及新的“更改”字符串),您必须调用 的toString()
方法,StringBuilder
因为它将基于内部存储的缓冲区创建一个新字符串。
但由于它System.out.println()
隐式调用该toString()
方法,因此此处不需要。
System.out.println(str);
推荐阅读
- java - Java.lang.classnotfoundexception - HelloWorld.class
- javascript - 当应用程序在虚拟文件夹中运行时,Webpack 不加载脚本
- python - 无法重命名熊猫 DataFrame 中的第一列
- vba - 始终保持 Excel 最小化
- java - Java Melody - 点击命中 URL 时解析模板“错误”时出错
- vba - 如何同时在多个 Wksheets 中搜索字符串?
- c# - 一个大视图中的几个小视图 mvvm light
- certificate - 用于验证 JWT 的 X.509 扩展
- javascript - Angular 2 内部 html 不适用于 html 标签
- gradle - 使用 Vulas 扫描 gradle 项目时出现问题