1.String和StringBuffer的区别
2.String a="abc";
  String a="abcde"
都说String长度不可变,这个例子应该怎么理解
3.给我举一个StringBuffer该变长度的例子

解决方案 »

  1.   

    其实这两句:
    String   a= "abc "; 
    String   a= "abcde " 
    和以下两句是等价的:
    String a=new String("abc");
    String a=new String("abcde");StringBuffer是可变的。它有两个方法提供改变,一个是append,另一个是insert。
      

  2.   

    StringBuffer sb = new StringBuffer();
    sb.append("abc");
    sb.append("de");String s = sb.toString();StringBuffer是为了执行大量的字符串链接操作,避免直接"abc"+"de"操作时产生的无用字符串实例。
      

  3.   

    这样也是对的啊
    String   a= "abc ";
     a= "abcde " ; 
    为什么说不能改变啊
      

  4.   

    String 型的数据,长度一但改变,看下楼上的例子,这样a的内存地址就改变了。
    要解决这种“字符串内容变了,内存地址不变”的问题,就要用到StringBuffer
      

  5.   

    StringBuffer a=new StringBuffer; 
    a.append("abc");
    这时a的地址没有变化,没有产生新的对象,而:
    String a=new String();
    a="abc";
    这时a的地址发生了变化,指向新产生的对象,而原来new的那个对象成了垃圾。
      

  6.   

    简单点说吧
    所谓的不变是指:string类型的变量所指向的内存单元中的内容(是内容)不变,无论对内容怎样操作,只可能会增加新的string型对象,而原来的内容不会被修改。
    所谓可变是指: stringbuffer是可以在原有的内容上修改,而无需生成新的对象。当然,string类型的变量可以重新指向其他的内存空间,只要不是句柄不是final就可以。但,一旦确定下来指向某个内存单元空间后,其中的内容是不可修改的。
      

  7.   

    只要不是句柄不是final就可以
    ==========================
    修改为
    只要句柄不是final就可以
      

  8.   

    String 是存储在字符池中,是不可改变的。。
    对String做任何操作后都产生新对象,引用指向新的对象,
    而不是操作原对象。。
    对String操作频繁时建议使用StringBuffer
      

  9.   

    String a="abc";
           a="abcd";
    在内存里面会有两个存储区,
    "abc" 和 "abcd"
    执行a = "abcd"创建"abcd" 时a指向"abcd"而不是改变"abcd"
      

  10.   

    1.String和StringBuffer的区别? 
    String类代表字符串,字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串
    StringBuffer类是可变字符序列.
    这到问题没啥可说的了 楼上都解释的很好.
    2.String   a= "abc "; 
      String   a= "abcde " 
    都说String长度不可变,这个例子应该怎么理解 
    EG:         String  a= "abc "; 
                          a= "abcde "举个例子,当然要结合你问问题1的答案来理解. 比如有一个监狱关押制度是String这个形式的监狱a , 我放进去一个abc的罪人.他必须自己一个屋子。后来我有要放进去一个犯人 abcde.他当然也是自己一个屋子 .因为他已经是STRING这个形式的监狱.规则不可改变.他两进的同一个监狱,但不代表他两是一个屋子.
    3.给我举一个StringBuffer该变长度的例子StringBuffer   sb   =   new   StringBuffer(); 
    sb.append( "a "); 
    sb.append( "b "); 
    append的方法很多不同类型的参数追加到序列中