标签: stringbuffer

StringBuffer等于方法比较内容吗?

可能重复:
将StringBuffer内容与equals进行比较

StringBuffer s1= new StringBuffer("Test");
StringBuffer s2 = new StringBuffer("Test");
if(s1.equals(s2)) {
  System.out.println("True");
} else {
  System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)

为什么那段代码打印"假"?

java string equals stringbuffer

5
推荐指数
2
解决办法
1万
查看次数

获取Stringbuffer中换行符开头的索引

在循环遍历StringBuffer时,我需要获取新行的起始位置.假设我在stringbuffer中有以下文档

"This is a test
Test
Testing Testing"
Run Code Online (Sandbox Code Playgroud)

在"测试","测试"和"测试"之后存在新行.

我需要这样的东西:

for(int i =0;i < StringBuffer.capacity(); i++){
if(StringBuffer.chatAt(i) == '\n')
    System.out.println("New line at " + i);

}
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,因为'\n'不是一个角色.有任何想法吗?:)

谢谢

java stringbuffer

5
推荐指数
1
解决办法
2万
查看次数

StringBuffer的最大大小

为什么StringBuffer它的尺寸有限制?

我浏览了一些链接:http: //www.coderanch.com/t/540346/java/java/maximum-size-hold-String-buffer.

是因为count成员变量,这是一个int?

假设我们有2 ^ 31-1个字符,StringBuffer并且我们附加了一些字符StringBuffer.计数成员变量将增加附加的字符数,如果计数变量已经达到其最大值(2 ^ 31-1),它将恢复为某个负值.

为什么会抛出错误?

java stringbuffer

5
推荐指数
2
解决办法
3万
查看次数

String 与 Stringbuffer 作为 HashMap 键

我试图理解为什么 String 和 Stringbuilder/StringBuffer 在用作 Hashmap 键时会受到不同的对待。让我用下面的插图来澄清我的困惑:

示例#1,使用字符串:

String s1 = new String("abc");
String s2 = new String("abc");
HashMap hm = new HashMap();
hm.put(s1, 1);
hm.put(s2, 2);
System.out.println(hm.size());
Run Code Online (Sandbox Code Playgroud)

上面的代码片段打印“1”。

示例#2,使用 StringBuilder(或 StringBuffer):

StringBuilder sb1 = new StringBuilder("abc");
StringBuilder sb2 = new StringBuilder("abc");
HashMap hm = new HashMap();
hm.put(sb1, 1);
hm.put(sb2, 2);
System.out.println(hm.size());
Run Code Online (Sandbox Code Playgroud)

上面的代码片段打印“2”。

谁能解释一下为什么行为不同。

java string stringbuilder hashmap stringbuffer

5
推荐指数
1
解决办法
6950
查看次数

就 StringBuilder 和 StringBuffer 类而言,同步意味着什么?

我对“同步”这个术语很困惑,我从java文档中得到了以下信息。

可变的字符序列。此类提供了与 StringBuffer 兼容的 API,但不保证同步。此类设计为在单个线程使用字符串缓冲区的地方(通常是这种情况)用作 StringBuffer 的直接替代品。如果可能,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。

据我所知,同步与线程及其访问方式有关。

可以说,我有一个 Web 应用程序在其方法之一中使用 StringBuilder,

  • 这里不保证同步意味着什么?
  • 我应该担心什么吗?我什么时候应该担心多线程?有什么例子吗?
  • 我什么时候应该关心有保证和无保证的同步?
  • 具有多线程的 Web 应用程序的示例是什么?

一个例子将受到高度赞赏。

请注意,我知道多线程访问需要同步,因为它们需要访问相同的数据!我需要一个例子来说明这一点。

java stringbuilder multithreading stringbuffer

5
推荐指数
1
解决办法
9507
查看次数

如何在StringBuffer中使用replaceAll()方法?

我需要替换字符串缓冲区中的多个单词。所以我正在寻找一种replaceAll方法StringBuffer

那么我们有StringBuffer吗?

字符串方法:

str2 = str1.replaceAll(regex, substr);
// (This is String method, I need like this in StringBuffer)
Run Code Online (Sandbox Code Playgroud)

java stringbuffer

5
推荐指数
1
解决办法
7113
查看次数

Java正则表达式匹配标题的降价语法

我有一个带有降价语法的字符串,我希望能够找到标题的降价语法,即 h1 = #、h2 = ## 等。

我知道每当我找到一个标题时,它就在行的开头。我也知道每行只能有一个标题。因此,例如,“###This is a heading”将匹配我的 h3 模式,但不适用于我的 h2 或 h1 模式。到目前为止,这是我的代码:

h1 = Pattern.compile("(?<!\\#)^\\#(\\b)*");
h2 = Pattern.compile("(?<!\\#)^\\#{2}(\\b)*");
h3 = Pattern.compile("(?<!\\#)^\\#{3}(\\b)*");
h4 = Pattern.compile("(?<!\\#)^\\#{4}(\\b)*");
h5 = Pattern.compile("(?<!\\#)^\\#{5}(\\b)*");
h6 = Pattern.compile("(?<!\\#)^\\#{6}(\\b)*");
Run Code Online (Sandbox Code Playgroud)

每当我使用 \\# 时,我的编译器 (IntelliJ) 都会告诉我:“冗余字符转义”。每当我使用 \\# 时它都会这样做。据我所知,# 不应该是正则表达式中的特殊字符,所以用两个反斜杠转义它应该允许我使用它。

当我找到匹配项时,我想用粗体 HTML 标记包围整个匹配项,如下所示:“ ###Heading ”,但由于某种原因它不起作用

//check for heading 6
Matcher match = h6.matcher(tmp);
StringBuffer sb = new StringBuffer();
while (match.find()) {
    match.appendReplacement(sb, "<b>" + match.group(0) + "</b>");
}
match.appendTail(sb);
tmp = sb.toString();
Run Code Online (Sandbox Code Playgroud)

编辑

所以我必须单独查看每个标题,我不能以相同的模式查看标题 1-6(这与使用相同模式的程序的其他部分有关)。到目前为止我所知道的:

  • 如果字符串中有标题,则它位于开头。
  • 如果它以标题开头,则后面的整个字符串都被视为标题,直到用户按 …

html java regex markdown stringbuffer

5
推荐指数
2
解决办法
2994
查看次数

将多行JTextArea写入txt文件

所以我有一个JTextArea用户输入,然后当他们点击一个按钮,它将它写入文本文件,我有两个setLineWrapsetWrapStyleWord设置trueJTextArea.

我想写文本文件在文本框中显示的确切方式.

我试图replace("\n", System.getProperty("line.separator"))String保持JTextArea其工作的内容上做一个,但是只有当用户在键入输入时实际点击返回键时,但是如果用户只是继续键入并命中一行的结尾,那么它跳转到它下面的线,replace不起作用.

我也试过使用a StringBuffer,我计算了在线上适合多少个字符,然后在for loop inserting每一行的末尾运行一个新行,所以对于第一行我会将它添加到位置90,第二行180,第三行270等等.但我很快意识到,并非在所有情况下工作,因为有些字符是比别人例如,你可以容纳下更多的小j'上比单一线S p的.

我想做的只是想办法计算一行的结尾,这样我才知道insert新行的位置,但我也对其他建议持开放态度.谢谢.如果你认为看到我的一些代码就会有所帮助.

更新 而不是实现代码来执行此操作,我与那些将成为使用此程序的唯一人之一的人进行了交谈,并且他对常规记事本格式很好并且我没有意识到这一点,但只要他在他的word中检查了wordWrap然后,记事本格式设置将消除他必须使用侧滚动以读取整行,感谢您的输入

java swing stringbuffer jtextarea filewriter

4
推荐指数
1
解决办法
671
查看次数

需要澄清最终的StringBuffer对象

通常,如果一个变量被声明为final,我们就不能覆盖该变量的值,但是当我们使用字符串缓冲区时这并不好.有人能让我知道为什么吗?

以下代码有效!!!!!!

  public static void main(String args[]) {
        final StringBuffer a=new StringBuffer("Hello");
        a.append("Welcome");
        System.out.println(a);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

你好,欢迎

java final stringbuffer

4
推荐指数
1
解决办法
3813
查看次数

StringBuilder.append的性能

建议使用(PMD规则AppendCharacterWithChar)StringBuilder.append(char)代替StringBuilder.append(String).我同意这一点.

但是,如果我想附加一个(短)字符串,"='"或者"</"正在使用

StringBuilder.append('=').append('\'')
Run Code Online (Sandbox Code Playgroud)

更好(更快)比

StringBuilder.append("='")
Run Code Online (Sandbox Code Playgroud)

java string performance stringbuffer

4
推荐指数
1
解决办法
531
查看次数