zoukankan      html  css  js  c++  java
  • 为什么不用String而用StringBuffer

    由于java的特殊性,如果在程序中使用String,那么就代表着在java里面生成了多个String,因为String对象是不可变的,也就是说如果大量使用String对象效率很降低。

    再来说StringBuffer,这是一个特殊的String对象,这个对象有append方法,换句话说我们可以随意更改里面字符串里面的内容了。

    能过学习Thinking in java发现,如果我们执行这么一段代码

    String s = "abc" + "test" + "def" + 34;

    实际上java在执行的时候会调用StringBuffer,也就是说在第一个“+”的时候就产生了一个StringBuffer对象,而“+”相当于调用了append方法。

    最后,回到主题上去,为什么不用String而用StringBuffer:如果我们只用到String,而不对这个String进行任何操作,我建议直接用String;反之如果要对这个String进行操作,则建议用StringBuffer,因为毕竟JVM自己去把一个String转成StringBuffer是需要时间的,哪怕一点点时间也是时间~!~~~!

    String初始化时创建多少个对象的问题:

    参考:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html

    以下创建了同个对象:

    String s2 = "abc";
    String s3 = "123";
    String s4 = "abc123";
    String s1 = "abc"+"123";
    String s=new String("abc"+"123");
    System.out.println(s==s1);
    System.out.println(s1==s2+s3);
    System.out.println(s4==s2+s3);
    System.out.println(s==s2+s3);
    System.out.println(s4==s1);
    System.out.println(s4==s);
    System.out.println("abc123"=="abc"+"123");

    实测是4个对象:abc, 123, abc123, new String("abc123");

    打印结果:

    false
    false
    false
    false
    true
    false

    路慢慢其休远羲,吾将上下而求所
  • 相关阅读:
    mq和kafaka架构方面对比高可用性
    一 mq简介
    gtibook 写api文档
    StackExchang.Redis 不稳定
    Log4Net 帮助类
    Android学习之Recyclerview
    《程序员修炼之道--从小工到专家》读书小计
    Xcode7 使用WebView loadRequest发送HTTP请求的问题
    ashx中应用HttpContext.Current.Session ,呈现未将对象引用设置到实例(转)
    Oracle 删除重复数据只留一条【转】
  • 原文地址:https://www.cnblogs.com/garinzhang/p/2573783.html
Copyright © 2011-2022 走看看