本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9718188
建立时间:2004年12月20日




[java语言]string和stringbuffer区别
原创空间,  软件技术

邢红瑞 发表于 2006/2/18 17:09:44

string和stringbuffer区别 这是好友面试的一道题,其实我知道使用的区别,StringBuffer必须new出来,StringBuffer的append的效率比string的+=的效率高,其实发现还有很大的区别,看了看以前scjp的考题public class Test {   public static void stringReplace (String text) {   text = text.replace('j' , 'i');    }      public static void bufferReplace (StringBuffer text) {   text = text.append("C");    }       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);     }     }答案是 javajavaC这是String参数传递,是不可变的(immutable). 而题目中第七行text = text.append (“C”),append方法会改变text中的值而这个text与main中的textBuffer是指向同一个对象,所以对应的输出是javac。string的值永远不会改变! String a = "a";//假设a指向地址0x0001,a = "b";//重新负值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的。从表面上看String类型的对象改变了值,但事实是他不能改变值,只能改变指向的地址 StringBuffer则不同,直接改变指向的地址中保留的值还有StringBuffer s1 = new StringBuffer("a");StringBuffer s2 = new StringBuffer("a");s1.equals(s2)//为什么是false String s1 = new String("a");String s2 = new String("a");s1.equals(s2)//为什么是trueStringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较地址的,所以等于false. String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以会是true。对于这样能不能面试出真正的水平,感到怀疑。


阅读全文(26500) | 回复(12) | 编辑 | 精华
 


回复:string和stringbuffer区别
原创空间,  软件技术

datebao(游客)发表评论于2010/6/14 20:34:50

stringbuffer有缓冲


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

3w(游客)发表评论于2010/4/13 14:35:24


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

hh(游客)发表评论于2009/7/1 0:02:27

够详细 高

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

hehe(游客)发表评论于2007/11/13 17:00:31

你可不可以把输入输出流说一下

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

秦明(游客)发表评论于2007/7/30 18:20:25

谢谢了。

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

游者20070730(游客)发表评论于2007/7/30 12:34:24

谢一个 那天我就遇到了这个题目 答得没有这般详细

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

ewq(游客)发表评论于2006/12/20 16:55:12

以下引用jk(游客)在2006-4-12 9:51:35的评论: 以下引用ligangman(游客)在2006-3-31 14:23:31的评论: String str=new String("HELLO"); String str="HELLO"; 以上的区别请说明以下 String str=new String("HELLO");创建了两个对象,一个是"HELLO",然后再用"HELLO"创建一个str引用的对象. 下面的就在创建"HELLO"之后把str指向"HELLO",这样只创建了一个String的实例

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

守护(游客)发表评论于2006/10/17 11:32:33

hi,竟然收到你的blog,庆祝一下!哈哈

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

Null(游客)发表评论于2006/4/29 17:19:10

,越来越晕啦

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:string和stringbuffer区别
原创空间,  软件技术

jk(游客)发表评论于2006/4/12 9:51:35

以下引用ligangman(游客)在2006-3-31 14:23:31的评论: String str=new String("HELLO"); String str="HELLO"; 以上的区别请说明以下 String str=new String("HELLO");创建了两个对象,一个是"HELLO",然后再用"HELLO"创建一个str引用的对象. 下面的就在创建"HELLO"之后把str指向"HELLO",这样只创建了一个String的实例

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 2 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144794011 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号