今天刚看到一片文章是这样写的
String s="a"+"b"+"c";
会被编译为
String s = new StringBuffer().append("a").append("b").append("c").toString();所以有时候没必要刻意的为了追求性能而写成下面一种形式。想确认一下是不是这样的?
顺便问一句:AIX和Windows都是采用little_endian的字节序吗?谢谢

解决方案 »

  1.   

    对于:
    String s="a"+"b"+"c";
    编译器的确很容易对于:
    String s="a"+"b"+"c";
    编译器的确很容易优化,因为本来就是常量表达式而已嘛,我都怀疑倒底是优化成
    String s = new StringBuffer().append("a").append("b").append("c").toString();
    还是直接优化成
    String s="abc";但问题是对天复杂的情况编译器优化不了怎么办呢?比如:
    String s = "a";
    if(new Random().nextInt() > 10000) {
        s = a + "Hello World";
    } else {
        if(System.in.Read() > 'A') {
             s += s2.toLowerCase();
        }
    }
    s += System.getProperty("user.dir");
    .....
      

  2.   

    little_endian和big_endian主要看CPU,而不是操作系统。比如Intel X86系列的是little_endian的,Sun Sparc系列是big_endian的。
    但如果你使用Java语言编程,那么不需要考虚这些。
      

  3.   

    再比如你根据用户输入的查寻条件来动态构造一个SQL查寻语句,我觉得还是用StringBuffer好,反正也影响代码的开发效率和可读性。当然,数据库应用的效率瓶颈通常不会发生在字符串连接上,这倒是事实。
      

  4.   

    看来在实际使用中还是使用StringBuffer更好一些
    向高手们学习~~~
      

  5.   

    刚刚对StringBuffer有了一点点了解,
    String对象是常量字符串,一旦被初始化和赋值,它的值和所分配的内存就被固定了.如果硬要改变它的值,将会产生一个包含新值的新String对象.这就是String对象会消耗掉很多资源的原因.而StringBuffer类被设计用与创建和操作动态字符串信息,为该对象分配的内存会自动扩展以容纳新增的文本。
    向高手学习中......