· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

String和stringBuffer类字符串的区别

发布时间:2007.03.28 01:41     来源:赛迪网技术社区    作者:kl40127

前面看到有人写String和stringBudffer的区别是前者是不能改写的,后者是可以改写的

我觉得说String的字符串不能改变话是不错,但是例子要举好

看看下面这个简单的例子:

首先,

public class xx {
public static void main(String[] args) { 
String s1 = "You are hired!";
String s2 = "You are hired!";
if (s1==s2) {
System.out.println("一个内存空间");
} else {
System.out.println("不是一个内存空间");
}
}
}

打印的结果是:一个内存空间

这里==的意义是两个操作数是否指向同一个对象

可见s2在不用new创建的情况下会自动检索到具有相同内容的内存空间中共享,那么既然s1和s2共享了同一个对象

再看下面的代码

public class xx {
public static void main(String[] args) { String s1 = "You are hired!";
String s2 = "You are hired!";
s1 = s1.replace('h','f');
System.out.println(s1);
if (s1==s2) {
System.out.println("一个内存空间");
} else {
System.out.println("不是一个内存空间");
}
}
}

代码结果是

You are fired!

不是一个内存空间

可见,String中s1的内容虽然被改写,但是已经不在是原来第一次分配到的那个内存空间,也就是String类的内容能被改变,但一旦改变系统将为其分配新的内存

说到与stringBuffer的区别,从根本上来说应该是

stringBuffer在做字符长度变动的时候将继续使用原来的内存空间,不新分配.

而String的长度一旦变动,就如上面的例子一样,其内部将分配新的内存空间.

(t006)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· JAVA基础应用:日期时间选择控件(代码) (03-27) · 基于java的图片文件格式转换和线性缩放 (03-26)
· JAVA基础:Javascript Cookie管理(程序) (03-26) · JAVA基础应用: 处理Java中的日期问题 (03-26)
· 教程:比较Java EE 5平台和J2EE 1.4平台 (03-26) · JAVA基础应用: 如何实现希尔排序算法 (03-26)
· JAVA应用: 浮点数转化为大写中文金额 (03-26) · 从URL获取文件保存到本地的JAVA代码 (03-26)
· JAVA基础: 连接Access数据库的代码 (03-26) · JAVA基础: 学习struts的一个小例子 (03-26)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..