比如我定义了一个StringBuffer对象strA,StringBuffer strA = new StringBuffer("haha");
再定义一个字符串,strB = "zaza";
然后strA.append("strB"),再去读strA的时候任然只能读出haha,append()方法根本没有把strB数据添加到strA中,大家遇到这种情况一般都是哪里有问题呢?希望大家讨论讨论,我最近就遇到了这个问题。
再定义一个字符串,strB = "zaza";
然后strA.append("strB"),再去读strA的时候任然只能读出haha,append()方法根本没有把strB数据添加到strA中,大家遇到这种情况一般都是哪里有问题呢?希望大家讨论讨论,我最近就遇到了这个问题。
解决方案 »
- String“画蛇添足输出”null字符串的原因是什么?
- Hibernate 链接MSSQL出现错误了。
- java字符串中的方法
- 各位老师,我想请教一个问题啊,WEB开发方面二个页面session有效期的问题
- 写文件操作为什么在LINUX和WINDOWS下的结果会不一样?!!?
- 一个关于string的基本功的小程序,求优化!
- 有中文的API文档下载吗?
- ajoo(聪明的一猪)来领第一个100分
- 为什么会是:) Runtime Exception ,有些看不懂:(
- 紧急求救,请问为何一直出错?ShowContent.java:7: 缺少返回语句 },这是为什么?多谢了!
- 求助:匹配一个既不是数字也不是"."的字符
- 小球移动
没有遇到过。
append方法里面别加引号,试试
StringBuffer strA = new StringBuffer("haha");strB = "zaza";strA.append(strB);但是你System.out.println(strA.toString());
的时候还是只有haha,zaza并没有追加到后面,我做字符串拼接的时候总是遇到无法拼接到一起的问题,搞得自己很晕!!!!
我把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的内存回收机制导致的,但是我实在是找不出哪里我引用错了!麻烦大家了!!!
StringBuffer strB = "zaza";
strA=strA.append("strB");
System.out.println(strA);
strA.append("strB");的返回值是一个字符串引用,你把这个引用重新赋给strA就可以了。(感觉不是在原来的String上追加的,而是复制到了另外一个里面。)
StringBuffer strB = "zaza";
strA=strA.append(strB);//这里写错了,呵呵
System.out.println(strA);
strA.append("strB");的返回值是一个字符串引用,你把这个引用重新赋给strA就可以了。(感觉不是在原来的String上追加的,而是复制到了另外一个里面。)
比如
public StringBuffer getLink() {
return this.link;
}
试试吧,如果这样还不行,我就不知道哪里出问题了。
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);
}
{
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