黑马程序员技术交流社区
标题:
帮忙解决一下困惑
[打印本页]
作者:
呆呆呆
时间:
2013-11-21 22:47
标题:
帮忙解决一下困惑
本帖最后由 呆呆呆 于 2013-11-22 11:44 编辑
String 和StringBuffer有什么具体区别啊,搞不太明白!
作者:
酱爆
时间:
2013-11-21 22:55
就比如int a = 5, 和 5 的区别,一个是变量,一个是常量
作者:
ysunday
时间:
2013-11-21 23:17
这个其实你得意会啊 ,
String类代表字符串,比如“abc” , “c”这都是String 类型的。是常量。
你做个比较
String s = "abc"
int a = 5;
对比下,其实String就相当于int,就是个类型而已,而“abc”相当于5
仅此而已,只不过String类型的可以是“abc“, ”ab“这种,不过你看int
还不是可以 10, 100, 这种吗。只代表一种类型而已,就是一个常量
又
a = a + 2;
s = s + "c";
再对比下,整数的可以相加得到a = 7;
字符串也可以相加,不过是连起来 s = ”abcc“
再说StringBuffer这个东西,其实这个类就是一个对字符串进行操作的类。
可变长度,可对字符串进行各种操作,赠删改查都可。
比如String s = "abc",你想将b换成d,那么你就得用StringBuilder了
StringBuffer s = new StringBuffer("abc");
s.setCharAt(1,'d');就行了
作者:
简★零度
时间:
2013-11-22 01:06
string的特点
1、String是一种特殊的数据类型,可创建对象。
2、通过String创建的对象分别可存在于字符串池(StringPool)和堆内存中
3、String是一个final的类型,即不可被继承修改,一经生成不可改变。
4、StringPool中的数据可共享,即两个引用变量可指向同一个字符串池中的字符串
5、Java中的任何对象都可写成字符串的形式。
StringBuffer的特点
1字符串的缓冲区类。是一个类似于数组的容器,里面可以添加内容,但是容器本身并没有改变
2.在使用的时候,我们可以对容器进行操作,添加、删除、替换、截取数据等,但是并没有改变容器
也不需要定义新的容器来接受数据有缓冲区。可以节省空间。
StringBuffer和String的区别
String拼接后以前的字符串就浪费了,而且还耗费了内存空间。
而StringBuffer使用的是同一个内存空间。
作者:
菜不鸟
时间:
2013-11-22 10:05
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都是String类的对象。字符串是常量;它们的值在创建之后不能改变。所以可以共享它们。StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
例如:我们要把1到100的所有数字拼起来,组成一个串。
StringBuffer sbf = new StringBuffer();
for(int i=0;i<100;i++)
{
sbf.append(i);
}
String str = new String();
for(int i=0;i<100;i++)
{
str = str + i;
}
红色代码效率很高,因为只创建了一个StringBuffer对象,而下面的代码效率很低,因为创建了101个对象。
作者:
呆呆呆
时间:
2013-11-22 11:26
谢谢你们的回答,搞明白了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2