关于String与StringBuffer string是相当于常量,一但创建就不再改变,所有方法会建立新的string对象而stringbuf则相反.所以如果字符串操作多的话,用stringBuf 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String是不可变字符串,但它与常量有区别,它可以重新赋值,而常量则不能,因此不能从此观点考虑,如果为包裹类,同样值不可改变,因此复合数据类型传的是引用也有特殊情况愿各位发表自己的观点 应该这么理解:它们是单向传递的,不管是stringReplace或者是bufferReplace方法匀不就把改变后的形参带回去。要说明的是为什么后一种能改变呢?那是因为你调用了系统方法append,这个append就是改变原来的实参,所以说并不是因为bufferReplace改变的,而是因为append而改变的注:把参数看成普通变量,只不过这个变量是一个对象罢了 String对象作为参数传递时和基本的int型等primary类型一样是值传递,而不是引用传递,我试过,刚开始我也不敢相信。 public static void bufferReplace(StringBuffer text){ text=text.append("c"); }上面这个方法改为:public static void bufferReplace(StringBuffer text) { StringBuffer aa=new StringBuffer("ccc"); text=aa; } 再试试看,然后再看我上面的理解 与你做的原题对比看看public class csdn402{ public static void stringReplace(String text) { text=text.replace('j','l'); System.out.println(text); } public static void bufferReplace(StringBuffer text) { StringBuffer aa=new StringBuffer("ccc"); text=aa; System.out.println(text); } public static void main(String args[]) { String textString=new String("java"); StringBuffer textBuffer=new StringBuffer("java"); stringReplace(textString); bufferReplace(textBuffer); System.out.println(textString+textBuffer); } } String专门定义不变字符串,而StingBuffer用来定义可变字符串。两者在性能上也有很大的区别:String比较适合短的字符串,StingBuffer适合动态增加的字符串。在实际使用过程中,要求:String+String这种在BS开发结构中不被提倡,对性能影响比较大。而StingBuffer则是比较推荐使用方法。 http://expert.csdn.net/Expert/topic/1611/1611155.xml?temp=.7364008看看对你有没有帮助 log4j,如何把sql日志输出到不同文件中? 关于equals()方法的疑问 菜鸟级 类型不兼容 问下我遇到的这个问题是什么原因如何解决? jasperReport 生成EXCEL问题 关于配置自己的servlet的问题(昏迷中的请教) 将灵魂出卖给Microsoft?还是选择Sun One? 一个简单问题 队列的实现, 请大家多多给看法 谢谢 WIN8_64+JNA+Eclipse,自己的DLL无法调用???在线等!!! 新手请教:java大全(Special Edintion using java1.1)上GreatRace问题(线程) 文件路径的问题!
此观点考虑,如果为包裹类,同样值不可改变,因此复合数据类型传的是引用也有特殊情况
愿各位发表自己的观点
注:把参数看成普通变量,只不过这个变量是一个对象罢了
上面这个方法改为:
public static void bufferReplace(StringBuffer text)
{
StringBuffer aa=new StringBuffer("ccc");
text=aa;
}
再试试看,然后再看我上面的理解
public class csdn402
{
public static void stringReplace(String text)
{
text=text.replace('j','l');
System.out.println(text);
}
public static void bufferReplace(StringBuffer text)
{
StringBuffer aa=new StringBuffer("ccc");
text=aa;
System.out.println(text);
}
public static void main(String args[])
{
String textString=new String("java");
StringBuffer textBuffer=new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString+textBuffer);
}
}
两者在性能上也有很大的区别:
String比较适合短的字符串,StingBuffer适合动态增加的字符串。
在实际使用过程中,要求:String+String这种在BS开发结构中不被提倡,
对性能影响比较大。而StingBuffer则是比较推荐使用方法。