黑马程序员技术交流社区

标题: 关于字符串连接的问题? [打印本页]

作者: 施家雄    时间: 2013-3-18 12:38
标题: 关于字符串连接的问题?
    字符串的连接有“+”、“concat“、“append”,我不清楚它们的适用范围,String   StringBuffer    StringBuild这三个类进行字符串连接的时候是怎么样的情况?速度怎么样?
作者: 123    时间: 2013-3-18 12:52
String类是不可变类,一旦被创建,包含在这个对象中的字符序列是不可改变的,在创建时可以使用“+”,创建以后就不可以了。StringBuffer和StringBuilder都是字符序列可变的类。StringBuffer和StringBuiler是基本相同的,只是StringBuffer是线程安全的,而StringBuilder是线程不安全的,StringBuilder性能好,如果要创建一个内容可变的字符串序列,优先考虑StringBuiler类。
作者: 王军行    时间: 2013-3-18 13:43
String 类代表字符串。字符串是常量,它们的值在创建之后不能改变。
StringBuffer是字符串缓冲区,是一个容器。特点是:
1.而且长度是可变的
2.可以直接操作多种数据类型
3.最终会通过toString变成字符串
他一般是用来存入一些对象,最终调用toString方法变成字符串用的。
StringBuilder和StringBuffer比他不是同步的,buffer是同步多线程安全的自己带锁
StringBuilder不用判断锁效率高 是StringBuffer的提升效率升级
需要同步自己可以枷锁,一般建议用StringBullder
String和他们之间用连接符就是调用了他们的toString 方法变成字符串后连接到一起
作者: HM张超    时间: 2013-3-18 15:16
String拼接字符串用+=
而StringBuffer用append 进行拼接字符串
但是如果StringBuffer没有转成String时 你想在字符串前面拼接的话需要在穿件一个StringBuffer对象。

作者: 施家雄    时间: 2013-3-19 00:21
王维帝 发表于 2013-3-18 12:52
String类是不可变类,一旦被创建,包含在这个对象中的字符序列是不可改变的,在创建时可以使用“+”,创建 ...

谢谢你的回答!
作者: 施家雄    时间: 2013-3-19 00:22
王军行 发表于 2013-3-18 13:43
String 类代表字符串。字符串是常量,它们的值在创建之后不能改变。
StringBuffer是字符串缓冲区,是一个容 ...

谢谢你的回答。我更想知道“+”、“concat“、“append”,它们在连接字符串时是怎么个情况。
作者: 施家雄    时间: 2013-3-19 00:23
shenbeiaia 发表于 2013-3-18 15:16
String拼接字符串用+=
而StringBuffer用append 进行拼接字符串
但是如果StringBuffer没有转成String时 你想 ...

谢谢你的回答!
作者: 王军行    时间: 2013-3-19 01:36
施家雄 发表于 2013-3-19 00:22
谢谢你的回答。我更想知道“+”、“concat“、“append”,它们在连接字符串时是怎么个情况。 ...

其实“+” “concat”都是通过append实现的。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。就是说字符串连接用的就是缓冲区+和concat都是使用了缓冲区 调用了StringBuilder的append方法和toString方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2