相关疑难解决方法(0)

如果编译器自动将字符串连接转换为StringBuilder,为什么要显式使用StringBuilder?

可能重复:
String中的StringBuilder与字符串串联在toString()中

我想知道,因为编译器内部使用StringBuilder在执行字符串连接时附加2个字符串,那么问题是什么?如果字符串连接已经为你完成了工作,我为什么要使用StringBuilder呢?还有其他具体原因吗?

java stringbuilder

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

StringBuilder/StringBuffer与"+"运算符

我正在阅读" 更好,更快,更轻的Java "(由Bruce Tate和Justin Gehtland撰写)并且熟悉敏捷类型团队的可读性要求,例如Robert Martin在其清晰的编码书中所讨论的内容.在我现在的团队中,我被告知明确不使用+运算符,因为它在运行时创建了额外的(和不必要的)字符串对象.

但是这篇文章,写于04年,讨论了对象分配是关于10个机器指令的.(基本上免费)

它还讨论了GC如何帮助降低此环境中的成本.

什么是使用之间的实际性能的权衡+,StringBuilder还是StringBuffer?(就我而言,它StringBuffer仅限于Java 1.4.2.)

StringBuffer对我来说导致丑陋,不太可读的代码,正如Tate的书中的几个例子所示.而且StringBuffer是线程同步的,这似乎有它自己的成本是大于中使用了"危险" +操作.

思想/意见?

java performance readability

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

Java替换文本文件中的行

如何替换文本文件中找到的文本行?

我有一个字符串,如:

Do the dishes0
Run Code Online (Sandbox Code Playgroud)

我想用以下内容更新它:

Do the dishes1
Run Code Online (Sandbox Code Playgroud)

(反之亦然)

我该如何做到这一点?

ActionListener al = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JCheckBox checkbox = (JCheckBox) e.getSource();
                    if (checkbox.isSelected()) {
                        System.out.println("Selected");
                        String s = checkbox.getText();
                        replaceSelected(s, "1");
                    } else {
                        System.out.println("Deselected");
                        String s = checkbox.getText();
                        replaceSelected(s, "0");
                    }
                }
            };

public static void replaceSelected(String replaceWith, String type) {

}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我想只替换读取的行.不是整个文件.

java replace line jcheckbox

28
推荐指数
2
解决办法
11万
查看次数

字符串生成器与字符串连接

使用字符串生成器而不是纯字符串连接有什么好处和权衡?

new StringBuilder(32).append(str1)
                     .append(" test: ")
                     .append(val)
                     .append(" is changed")
                     .toString();
Run Code Online (Sandbox Code Playgroud)

vs说

str1 + " test: " + val + " is changed".
Run Code Online (Sandbox Code Playgroud)

str1是一个随机的10个字符串. str2是一个随机的8个字符串.

java stringbuilder string-concatenation

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

什么时候引入Javac StringBuilder/StringBuffer优化?

我知道Javac编译器能够+使用StringBuilder/ 来转换字符串连接StringBuffer,并且我很想知道从哪个版本引入了这个更改?

我正在使用此示例代码:

public class Main {
  public static void main(String[] args) {
      String a = args[0];
      String s = "a";
      s = s + a;
      s = s + "b";
      s = s + "c";
      s = s + "d";
      s = s + "e";
      System.out.println(s);
  }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经试过javac 1.8.0_121,javac 1.6.0_20,javac 1.5.0_22java 1.4.2_19.

这里是字节码我看到使用的样本javap -c来自1.4.2_19:

6:  astore_2
7:  new …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder javac stringbuffer jdk1.4

27
推荐指数
4
解决办法
2732
查看次数

什么时候应该显式使用StringBuilder?

据我所知,当我做String baz = "foo" + "bar" + "123"Java编译器时,内部用一个替换表达式StringBuilder.然而,我们的Java老师告诉我们,总是StringBuilder明确使用明确的...

我是否正确假设我需要在连接内部循环时显式使用StringBuilder,如Stack Overflow问题字符串生成器与字符串连接的答案中所示?是否有其他情况下,你应该明确地使用StringBuilder,而不是++=

java string stringbuilder concatenation

21
推荐指数
1
解决办法
2481
查看次数

使用Java中的regex格式化字符串

有没有什么办法可以使用正则表达式将字符串格式化为特定模式,或者是stringbuilder + substring更快的方法?

例如,输入电话号码 - > 1234567890

输出为 - >(123)456-7890

我看到这篇文章是可能的:http://www.4guysfromrolla.com/webtech/031302-1.shtml但是给出的解释是在ASP中.我怎么用Java做的???

java regex string

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

如何在Eclipse for Java中为字符串和其他项使用不同的换行

我想在运算符之后使用换行符进行字符串换行,然后在Eclipse for Java中使用其他项(数字,自定义对象,...)之前的换行符.

当添加具有不同符号的数字时,操作员对我来说比数字更重要.让前面的操作员更好地阅读语句会很好:

一个.

int foo =  baaa
           + veryveryveryloooooongexpression
           - shortexpression
           + anotherexpression;
Run Code Online (Sandbox Code Playgroud)

B.

int foo =  baaa +
           veryveryveryloooooongexpression -
           shortexpression +
           anotherexpression;
Run Code Online (Sandbox Code Playgroud)

另一方面,在添加字符串时,操作符只是用于继续行,而String项对我来说更重要.一行末尾的操作符给出了一个暗示,即下一行中会发生一些事情.因此我想在字符串运算符之后使用换行:

B.

String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."
Run Code Online (Sandbox Code Playgroud)

一个.

 String message = "Would you like to use line wrapping at " + position
                  +" ? If you want to keep that behavior …
Run Code Online (Sandbox Code Playgroud)

java eclipse formatter word-wrap

13
推荐指数
1
解决办法
1332
查看次数

Java如何使用"+"进行字符串连接?

我读到了Java使用+=运算符的方式StringBuilder.
操作是否相同("a" + "b")

java string

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

在Java中生成随机单词?

我写了一个程序,可以对单词进行排序并确定任何字谜.我想生成一个随机字符串数组,以便我可以测试我的方法的运行时.

public static String[] generateRandomWords(int numberOfWords){
String[] randomStrings = new String[numberOfWords];
Random random = Random();
    return null;
}
Run Code Online (Sandbox Code Playgroud)

(方法存根)

我只想要长度为1-10的小写单词.我读了一些关于生成随机数,然后转换为char或其他东西的东西,但我并不完全理解.如果有人可以告诉我如何生成随机单词,那么我应该能够轻松地使用for循环将单词插入到数组中.谢谢!

java arrays random words

10
推荐指数
3
解决办法
6万
查看次数