标签: stringbuilder

为什么字符串连接在C#中没有自动转换为StringBuilder?

可能重复:
为什么String.Concat没有针对StringBuilder.Append进行优化?

有一天,我正在向我的一个朋友咆哮一个特定的Telerik控件.我告诉他生成一个控制树花了几秒钟,在分析后我发现它在循环中使用字符串连接而不是StringBuilder.重写后,它几乎是瞬间完成的.

所以我的朋友听说过,并且似乎很惊讶C#编译器没有像Java编译器那样自动进行转换.阅读Eric Lippert的许多答案,我意识到这个功能没有成功,因为它不值得考虑.但是,如果假设成本实现它的成本很小,那么什么理由会阻止人们去做呢?

c# string stringbuilder compiler-optimization

9
推荐指数
2
解决办法
1257
查看次数

为什么String.intern()方法返回两个不同的结果?

我有这样的代码:

String str1 = new StringBuilder("???").append("??").toString();
System.out.println(str1.intern() == str1); //true

String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern() == str2); //false

String str3 = new StringBuilder("Str").append("ing").toString();
System.out.println(str3.intern() == str3); //true
Run Code Online (Sandbox Code Playgroud)

我有结果:

String str1 = new StringBuilder("???").append("??").toString();
System.out.println(str1.intern() == str1); //true

String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern() == str2); //false

String str3 = new StringBuilder("Str").append("ing").toString();
System.out.println(str3.intern() == str3); //true
Run Code Online (Sandbox Code Playgroud)

我能理解为什么line1和line3是真的,但我是关于line2的问题,为什么这是假的?

我的java是:java版"1.8.0_73"

java string stringbuilder string-interning

9
推荐指数
1
解决办法
275
查看次数

如何将TextBox控件绑定到StringBuilder实例?

我想要几个文本框来对底层字符串的更改做出反应.因此,如果我要更改字符串的内容,所有这些文本框也会更改其内容.

现在,我不能使用String类型,因为它是不可变的.所以我选择了StringBuilder.但TextBox对象的Text属性只接受String.

有没有一种简单的方法将StringBuilder对象"绑定"到TextBox的Text属性?

非常感谢!

PS:TextBox目前是WPF.但是由于Mono,我可能会切换到Windows Forms.

.net c# string stringbuilder textbox

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

如何使用字符串生成器在java中打印最多两个小数位?

嗨我在分割字符串构建器和打印后尝试打印字符串构建器让我看看我的代码,

string.append("Memomry usage:total:"+totalMemory/1024/1024+
"Mb-used:"+usageMemory/1024/1024+
" Mb("+Percentage+"%)-free:"+freeMemory/1024/1024+
" Mb("+Percentagefree+"%)");
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,"totalmemory"和"freememory"是双重类型,其字节值不为空,所以我将它除以"1024"两次得到"Mb","string"是字符串生成器的变量使用之后代码我只是打印它得到的结果,如下所示,

Used Memory:Memomry usage: 
total:13.3125Mb-used:0.22920989990234375Mb (0.017217645063086855%)
-free:13.083290100097656Mb (0.9827823549369131%)
Run Code Online (Sandbox Code Playgroud)

我希望获得二进制位置的百分比和mb中使用和空闲内存的值,就​​像这个"使用:2345.25"在这个问题中记得

希望你的建议

提前致谢

java stringbuilder jsp

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

为什么object.Equals和instanceobject.Equals不相同

        string s1 = "t";
        string s2 = 't'.ToString();        

        Console.WriteLine(s1.Equals(s2)); // returning true
        Console.WriteLine(object.Equals(s1, s2)); // returning true
Run Code Online (Sandbox Code Playgroud)

这里返回相同的结果.现在,当我使用StringBuilder时,它没有返回相同的值.底层的原因是什么?

        StringBuilder s1 = new StringBuilder();
        StringBuilder s2 = new StringBuilder();

        Console.WriteLine(s1.Equals(s2)); // returning true
        Console.WriteLine(object.Equals(s1, s2)); // returning false
Run Code Online (Sandbox Code Playgroud)

编辑1:我的上述问题在下面回答.但在本次讨论中,我们发现StringBuilder在其实现中没有任何覆盖Equals方法.所以当我们调用StringBuilder.Equals时,实际上它会转到Object.Equals.因此,如果有人调用StringBuilder.Equals和S1.Equals(S2),结果将会有所不同.

c# string stringbuilder

8
推荐指数
1
解决办法
334
查看次数

为什么StringBuilder比StringBuffer慢?

这个例子中,StringBuffer实际上比StringBuilder更快,而我本来期望相反的结果.

这与JIT的优化有关吗?有谁知道为什么StringBuffer比StringBuilder更快,即使它的方法是同步的?

这是代码和基准测试结果:

public class StringOps {

    public static void main(String args[]) {

        long sConcatStart = System.nanoTime();
        String s = "";
        for(int i=0; i<1000; i++) {
            s += String.valueOf(i);
        }
        long sConcatEnd = System.nanoTime();

        long sBuffStart = System.nanoTime();
        StringBuffer buff = new StringBuffer();
        for(int i=0; i<1000; i++) {
            buff.append(i);
        }
        long sBuffEnd = System.nanoTime();

        long sBuilderStart = System.nanoTime();
        StringBuilder builder = new StringBuilder();
        for(int i=0; i<1000; i++) {
            builder.append(i);
        }
        long sBuilderEnd = System.nanoTime();

        System.out.println("Using + operator : …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder stringbuffer

8
推荐指数
2
解决办法
3266
查看次数

string.replace vs StringBuilder.replace用于内存

我已经将一个流下载为一个大约36MB的byte []'raw'.然后我将其转换为字符串

string temp = System.Text.Encoding.UTF8.GetString(raw)
Run Code Online (Sandbox Code Playgroud)

然后我需要用"\ r \n"替换所有"\n",所以我尝试了

 string temp2 = temp.Replace("\n","\r\n")
Run Code Online (Sandbox Code Playgroud)

但它抛出了"内存不足"的例外.然后我尝试使用StringBuilder创建一个新字符串:

string temp2 = new StringBuilder(temp).Replace("\n","\r\n").toString()
Run Code Online (Sandbox Code Playgroud)

并没有抛出异常.为什么首先会出现内存问题(我这里只处理36MB),还有为什么StringBuilder.Replace()在另一个没有的情况下工作?

c# stringbuilder replace

8
推荐指数
1
解决办法
4513
查看次数

StringBuilder构造函数中capacity和maxCapacity的区别是什么?

有一个构造函数的StringBuilder类(INT32,INT32).您会看到有两个参数capacitymaxCapacity.

我试图在StringBuilder构造函数中搜索capacity和maxCapacity之间的差异.但是,我没有得到任何理解构造函数的东西.我在msdn上找到了文档.不过,我不明白为什么需要它以及这些参数的用途是什么.我仍然想到一些问题,我应该在哪里使用这个构造函数?它是否有助于提高我的应用程序的性能?

.net c# stringbuilder

8
推荐指数
1
解决办法
3308
查看次数

"StringBuilders不是线程安全"的含义

我已经阅读了一些关于Java程序设计语言中的Strings和StringBuilders的好处和缺点的文章.在其中一篇文章中,作者写道:String.

现在我无法理解它的含义.能否请你告诉我的差异StringBuilder,StringBuffer以及String特别是在"线程安全"的情况下.(用代码描述可能非常好,但如果不可能,任何提示将不胜感激).

java string stringbuilder multithreading stringbuffer

8
推荐指数
3
解决办法
7565
查看次数

Java StringBuilder可以容纳多少个字符?

StringBuilder是否具有JAVA中最大容量的字符限制.

StringBuilder url=new StringBuilder();

stmt = connnection.createStatement();
String sql="SOME QUERY";
rs = stmt.executeQuery(sql);
while(rs.next())
{
    String emailId=rs.getString("USER_EMAIL_ID");
     url.append(emailId);  
}
Run Code Online (Sandbox Code Playgroud)

StringBuilder变量'url'是否具有最大容量,还是可以容纳所有内容?

java stringbuilder jdk1.6 capacity

8
推荐指数
1
解决办法
9535
查看次数