比如我定义了一个StringBuffer对象strA,StringBuffer strA = new StringBuffer("haha");
再定义一个字符串,strB = "zaza";
然后strA.append("strB"),再去读strA的时候任然只能读出haha,append()方法根本没有把strB数据添加到strA中,大家遇到这种情况一般都是哪里有问题呢?希望大家讨论讨论,我最近就遇到了这个问题。

解决方案 »

  1.   

    strA.append(strB)不要双引号
    没有遇到过。
      

  2.   

    strA.append("strB")是不是打印 hahastrB ? 
    append方法里面别加引号,试试
      

  3.   

    我的错,strB不带引号的,是这样的,
    StringBuffer strA = new StringBuffer("haha");strB = "zaza";strA.append(strB);但是你System.out.println(strA.toString());
    的时候还是只有haha,zaza并没有追加到后面,我做字符串拼接的时候总是遇到无法拼接到一起的问题,搞得自己很晕!!!!
      

  4.   

    我的代码有点乱,没敢贴出来,还是贴出来吧,大家看的能够详细点。这是一个解析xml的代码
    我把Handler里的character()方法贴出来吧,主要是这里出问题
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    // TODO Auto-generated method stub
    super.characters(ch, start, length);
    String tmpstr = new String(ch, start, length);

    switch(ElementState)
    {
    case TITLE:
    if(ParseState == ELE_CHANNEL)
    {
    tmpChannelData.setTitle(tmpstr);
    ElementState = -1; 
    System.out.println(tmpstr);
    }
    if(ParseState == ELE_ITEM)
    {
    tmpItemData.setTitle(tmpstr);
    ElementState = -1;
    System.out.println(tmpstr);
    }
    ;
    break;
    case DESCRIPTION:
    if(ParseState == ELE_CHANNEL)
    {
    tmpChannelData.setDescription(tmpstr);
    ElementState = -1;
    System.out.println(tmpstr);
    }
    if(ParseState == ELE_ITEM)
    {
    tmpItemData.setDescription(tmpstr);
    ElementState = -1;
    System.out.println(tmpstr);
    }
    ;
    break;
    case LINK:
    if(ParseState == ELE_CHANNEL)
    {
    tmpChannelData.setLink(tmpstr);
    ElementState = -1;
                                           .....................后面的代码类似,再把我的ItemData代码贴出来:public class ItemData {
    private StringBuffer title;
    private StringBuffer description;
    private StringBuffer link;
    private StringBuffer category;
    private StringBuffer pubDate;
    private StringBuffer contentEncoded;

    //构造函数
    public ItemData()
    {
    title = new StringBuffer("数据");
    description = new StringBuffer("数据");
    link = new StringBuffer("数据");
    category = new StringBuffer("数据");
    pubDate = new StringBuffer("数据");
    contentEncoded = new StringBuffer("数据");
    }

    public String getTitle() {
    return title.toString();
    }
    public void setTitle(String title) {
    this.title.append(title);
    }
    public String getDescription() {
    return description.toString();
    }
    public void setDescription(String description) {
    this.description.append(description);
    }
    public String getLink() {
    return link.toString();
    }
    public void setLink(String link) {
    this.link.append(link);
                                      ...............剩下的代码内容类似character()方法将会在Handler中多次调用,但是我输出我构造的那个ItemData里的元素,发现还是原来的”数据“,并没有将我解析出来的字符串添加到他们后面,我猜肯定是java的内存回收机制导致的,但是我实在是找不出哪里我引用错了!麻烦大家了!!!
                
      

  5.   

    StringBuffer strA = new StringBuffer("haha");
    StringBuffer strB = "zaza";
    strA=strA.append("strB");
    System.out.println(strA);
    strA.append("strB");的返回值是一个字符串引用,你把这个引用重新赋给strA就可以了。(感觉不是在原来的String上追加的,而是复制到了另外一个里面。)
      

  6.   

    StringBuffer strA = new StringBuffer("haha");
    StringBuffer strB = "zaza";
    strA=strA.append(strB);//这里写错了,呵呵
    System.out.println(strA);
    strA.append("strB");的返回值是一个字符串引用,你把这个引用重新赋给strA就可以了。(感觉不是在原来的String上追加的,而是复制到了另外一个里面。)
      

  7.   

    看了你代码,你是不是可以把,StringBuffer 这个对象拿出去
    比如
    public StringBuffer getLink() {
    return this.link;
    }
    试试吧,如果这样还不行,我就不知道哪里出问题了。
      

  8.   

    经过测试,无楼主上述问题。
    1.数据是否传到该函数内
    2.是否能匹配switchpublic class Test {
    public static void main(String args[]){
    TestStringBuffer tsb = new TestStringBuffer();
    String s= new String("abc");
    tsb.setAsb(s);
    System.out.println(tsb.getAsb());
    }
    }
    class TestStringBuffer{

    private StringBuffer sb;

    public TestStringBuffer(){
    this.sb = new StringBuffer("数据");
    }
    public String getAsb() {
    return this.sb.toString();
    }
    public void setAsb(String s){
    this.sb.append(s);
    }
      

  9.   

    没有这种情况的吧public class Test
    {
    public static void main(String[] args) throws Exception
    {
    StringBuffer str1 = new StringBuffer("aaa");
    String str2 = "bbb";
    str1.append(str2);
    System.out.println(str1.toString());
    }
    }打印结果aaabbb