服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

string和stringbuffer类字符串的区别

前面看到有人写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)


扫描关注微信公众号