您的位置:首页>软件开发>JAVA>

String和stringBuffer类字符串的区别

[ 来源:赛迪网技术社区 | 更新日期:2007-7-15 21:28:31 | 评论 0 条 | 我要投稿 ]

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

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

字串4

字串5

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

字串3

首先,

字串9

字串2

字串6

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("不是一个内存空间");
}
}
} 字串9 

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

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

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

字串1

再看下面的代码

字串1

字串7

字串6

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("不是一个内存空间");
}
}
} 

字串1

代码结果是 字串3

You are fired!

字串4

不是一个内存空间

字串1

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

字串1

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

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

字串9

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

字串7


Tags:
责任编辑:
您的评论
用户名: 新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为