Java StringBuilder调用deleteCharAt无需保存返回值即可生效的原因是什么?
问题解答
第二段代码报错的原因
StringBuilder的deleteCharAt()方法返回值类型为StringBuilder,你在代码中将该返回值直接赋值给了String类型的backspace变量,Java是强类型语言,不兼容的类型直接赋值会触发编译错误,这就是你第二段代码报错的核心原因。
无需保存操作结果也能正常运行的原因
StringBuilder是可变字符序列对象,和不可变的String类不同,它的所有修改类方法(包括deleteCharAt、append、insert等)都是直接修改对象内部存储的字符序列,不需要生成新的对象。
这类方法返回StringBuilder本身只是为了支持链式调用语法(你最初的代码str.deleteCharAt(textField.getText().length()-1).toString()就是典型的链式调用写法),修改后的内容本身就已经存储在原str对象里,所以哪怕你不接收方法的返回值,后续调用str.toString()时,拿到的自然就是删除最后一个字符后的结果。
内容的提问来源于stack exchange,提问作者Hello Student
相关产品推荐
相关产品推荐

