使用此代码:
public static void main(String[] args) {
String s = "Java";
StringBuilder buffer = new StringBuilder(s);
change(buffer);
System.out.println("What's strBuf.charAt(5)? " + strBuf.charAt(3));
System.out.println(buffer);
}
private static void change(StringBuilder buffer) {
buffer.append(" and HTML");
}
当我使用StringBuilder运行代码时,出现错误消息
The constructor StringBuilder(String) is undefined
The method charAt(int) is undefined for the type StringBuilder
尝试了StringBuffer,它可以工作。StringBuffer对象的内容被编译为“ Java和Eclipse ..”。
public static void main(String[] args) {
String s = "Java";
StringBuffer strbuf = new StringBuffer(s);
change(strbuf);
System.out.println("The Stringbuffer.charAt(5) is ? " + strbuf.charAt(3));
System.out.println(strbuf);
}
private static void change(StringBuffer strbuf) {
strbuf.append(" and Eclipse");
}
}
StringBuilder
确实 有一个接受a
String
作为参数
的构造函数,并且
确实
有一个.charAt()
方法(由于实现了它必须实现CharSequence
)。
结论:这是您的IDE中的一个不幸,它没有导入正确的StringBuilder
。您使用的另一个库具有不幸的“属性”,该库以相同的名称实现了一个类-
但不在同一包中。
如果导入行是,请在文件顶部查看:
import java.lang.StringBuilder;
s1和s3最终调用StringBuilder。toString,方法toString()控制一个新字符串(),然后调用该字符串。intern(),结果不同,这让我很困惑。
问题内容: 我有一个旧的Java文件,该文件使用String串联来构建巨大的String对象。这是一个严重的性能问题。 至 基本上我只需要在Java中存根即可将String实例化作为输入并转换为StringBuilder.Anybody曾经尝试过吗? 问题答案: 在您的示例中,固定文字比使用StringBuilder更有效。 固定文字将被编译器检测到并将被内联为单个值,因此这两行 和 将生成完全相
本文向大家介绍辨析Java中的String与StringBuffer及StringBuilder字符串类,包括了辨析Java中的String与StringBuffer及StringBuilder字符串类的使用技巧和注意事项,需要的朋友参考一下 1 String String:字符串常量,字符串长度不可变。 2 StringBuffer StringBuffer:字符串变量(Synchronized
问题内容: 我最近遇到了一个我以前从未见过的习惯用法:StringWriter和PrintWriter进行的字符串汇编。我的意思是,我知道如何使用它们,但是我一直使用StringBuilder。是否有具体的理由偏爱一个?对我来说,StringBuilder方法似乎更自然,但这只是样式吗? 我在这里查看了几个问题(包括最接近的一个问题:StringWriter或StringBuilder),但没有一
问题内容: 我正在阅读“ 更好,更快,更轻便的Java ”(作者Bruce Tate和Justin Gehtland),并且熟悉敏捷类型团队的可读性要求,例如Robert Martin在其干净的编码书中讨论的内容。在我现在所在的团队中,已明确告知我不要使用运算符,因为它会在运行时创建额外的(和不必要的)字符串对象。 但是,这篇写于‘04的文章讨论了对象分配如何与10条机器指令相关。(基本上免费)
可能重复: 基于参数的真实类型选择重载方法 当参数为文字空值时,如何选择重载方法? 当我执行下面的代码时,我得到以下输出: 名为“”的字符串参数为“”的方法。。。" 为什么?