标签: stringbuffer

每次调用 StringBuffer#toString 和 StrinBuilder#toString 都会从字符串池中返回新实例还是实例?

我的问题是我是否使用 StringBuffer(或 StringBuilder),以及我是否多次在实例上调用 toString 方法。StringBuffer 每次都会返回新的 String 实例还是从 String 池中返回 String?(假设我在两次调用之间没有对 StringBuffer 进行任何更改)

java string stringbuilder stringbuffer

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

"StringBuffer是同步的(或线程安全的)而StringBuilder不是",为什么这会使StringBuffer方法变慢?

看完之后 - '同步'是什么意思?我仍然无法理解为什么在线程安全的环境中StringBuffer比StringBuilder慢.StringBuffer必须做多少耗时的工作才能让它变慢?

java stringbuilder synchronization stringbuffer thread-safety

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

Spring控制器是否是线程安全的?

我正在Spring Controller中编写一个私有实用程序方法.

我需要使用StringBuffer或者StringBuilder.前者是线程安全的,后者不是,但后者要快得多.

基本上,它看起来像这样:

private String buildTextToDisplay() {
    StringBuffer sb = new StringBuffer();
    sb.append( ... );
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

显然,我不希望两个会话同时调用它并返回垃圾.

java stringbuilder multithreading stringbuffer thread-safety

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

常量字符串VS StringBuffer的串联

您可以为使用一个或另一个更好,更快,更正确的变体提供什么参数.

第一个变种:

StringBuffer sql = new StringBuffer("SELECT DISTINCT f.ID ")
    .append("FROM FIRST_TABLE F ")
        .append("LEFT JOIN SECOND_TABLE s ON f.ID = s.F_ID ")
    .append("WHERE ")
        .append("F.BOOL = 1 ")
        .append("AND S.DATE IS NOT NULL ")
        .append("AND S.CLOSED = 0 ");
Run Code Online (Sandbox Code Playgroud)

第二种变体:

String sql = "SELECT DISTINCT f.ID " +
             "FROM FIRST_TABLE F " +
                "LEFT JOIN SECOND_TABLE s ON f.ID = s.F_ID " +
             "WHERE "
                "F.BOOL = 1 " +
                "AND S.DATE IS NOT NULL " +
                "AND S.CLOSED …
Run Code Online (Sandbox Code Playgroud)

java string concatenation stringbuffer

3
推荐指数
1
解决办法
726
查看次数

如何删除java中字符串缓冲区的最后一个字符?

我有以下代码,我想删除最后一个附加的字符StringBuffer:

StringBuffer Att = new StringBuffer();
BigDecimal qty = m_line.getMovementQty();
int MMqty = qty.intValue();
for (int i = 0; i < MMqty;i++){
    Att.append(m_masi.getSerNo(true)).append(",");
}
String Ser= Att.toString();
fieldSerNo.setText(Ser);
Run Code Online (Sandbox Code Playgroud)

我想删除最后一个值后的","(完成For循环后)

java string stringbuffer

3
推荐指数
1
解决办法
8433
查看次数

是什么阻止Cloneable成为像StringBuilder这样的可变对象?

制作一个不可变对象是个坏主意Cloneable.这就是为什么 String不能克隆.不可变BigInteger并且BigDecimal也没有 Cloneable.

但是无法克隆可变的StringBuilder和StringBuffer!

这种决定背后的原因是什么?

是的,我可以使用"复制构造函数",new StringBuilder(CharSequence seq)但提供复制构造函数和禁止克隆的设计原则/推理是什么?

java stringbuilder clone stringbuffer cloneable

3
推荐指数
1
解决办法
59
查看次数

为什么我从java编译器中获取不兼容的类型?

我是一名Java新手,但我是一名经验丰富的程序员(汇编程序,COBOL,C/C++,REXX)

我不明白为什么编译器给我以下内容:

[loading java\lang\Throwable.class(java\lang:Throwable.class)]
src\LU62XnsCvr.java:265: incompatible types
found   : java.lang.String
required: java.lang.StringBuffer
Run Code Online (Sandbox Code Playgroud)

码:

message_data = "LU62XCE0513: Request File I/O Exception =" ;
Run Code Online (Sandbox Code Playgroud)

我定义message_data为:

static StringBuffer message_data = new StringBuffer();
Run Code Online (Sandbox Code Playgroud)

那么为什么我不能String在StringBuffer标签中放置一个简单的文字message_data?我的意思是两种类型String..对吗?

java string stringbuffer

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

哪个类用于此静态方法,StringBuffer或StringBuilder?

对于以下代码,我应该在静态方法中使用哪个类,StringBuilder或者StringBuffer?基于API,StringBuffer是线程安全的,但StringBuilder不是.

public static String getString(int[] arrs) {
    StringBuilder sb = new StringBuilder();  //1
    StringBuffer sb = new StringBuffer();    //2
    for (int i : arrs) {
        sb.append(i);
    }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

java stringbuilder multithreading stringbuffer

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

如果我有足够的内存,我应该使用stringBuilder重写字符串concat吗?

我有以下代码行:

return ROOT_USER_IMAGE_PATH + File.separator + userId 
       + File.separator + nameWithoutExtension + "__" 
       + new SimpleDateFormat("yyyyMMddhhmm").format(new Date()) 
       + extension;
Run Code Online (Sandbox Code Playgroud)

在代码审查中,我的同事说我用它替换了它StringBuilder.

我知道它会更快地运行,但我认为这种增强功能绝对是次要的,没有人能够感受到它.

当我们有大量的记忆时,你认为在现代情况下鲤鱼和这样的未成年人有什么意义?

java string stringbuilder stringbuffer

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

Java和Android中StringBuffer类的不同行为

我正在使用Stringbuffer来检索缓冲区的当前容量,我发现了非常奇怪的行为.

我在Java和Android下运行代码.

根据许多资源,我发现这个公式可以增加缓冲容量

如果字符数从其当前容量增加,则容量增加(oldcapacity*2)+2.例如,如果当前容量为16,则为(16*2)+ 2 = 34.

    StringBuffer sb = new StringBuffer();
    System.out.println(sb.capacity());
    sb.append("Hello Hello Hello Hello");
    System.out.println(sb.capacity());
    System.out.println(sb.length());
Run Code Online (Sandbox Code Playgroud)

Java输出 -

 default capacity = 16
 increases capacity = 34
 length = 23
Run Code Online (Sandbox Code Playgroud)

Android输出 -

 default capacity = 16
 increases capacity = 26
 length = 23
Run Code Online (Sandbox Code Playgroud)

我无法理解这一点,如果有人知道这一点那么请帮助我.

提前致谢.

java android stringbuffer

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