A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施家雄 高级黑马   /  2013-3-18 12:38  /  2258 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    字符串的连接有“+”、“concat“、“append”,我不清楚它们的适用范围,String   StringBuffer    StringBuild这三个类进行字符串连接的时候是怎么样的情况?速度怎么样?

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

7 个回复

倒序浏览
String类是不可变类,一旦被创建,包含在这个对象中的字符序列是不可改变的,在创建时可以使用“+”,创建以后就不可以了。StringBuffer和StringBuilder都是字符序列可变的类。StringBuffer和StringBuiler是基本相同的,只是StringBuffer是线程安全的,而StringBuilder是线程不安全的,StringBuilder性能好,如果要创建一个内容可变的字符串序列,优先考虑StringBuiler类。
回复 使用道具 举报
String 类代表字符串。字符串是常量,它们的值在创建之后不能改变。
StringBuffer是字符串缓冲区,是一个容器。特点是:
1.而且长度是可变的
2.可以直接操作多种数据类型
3.最终会通过toString变成字符串
他一般是用来存入一些对象,最终调用toString方法变成字符串用的。
StringBuilder和StringBuffer比他不是同步的,buffer是同步多线程安全的自己带锁
StringBuilder不用判断锁效率高 是StringBuffer的提升效率升级
需要同步自己可以枷锁,一般建议用StringBullder
String和他们之间用连接符就是调用了他们的toString 方法变成字符串后连接到一起

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
String拼接字符串用+=
而StringBuffer用append 进行拼接字符串
但是如果StringBuffer没有转成String时 你想在字符串前面拼接的话需要在穿件一个StringBuffer对象。
回复 使用道具 举报
王维帝 发表于 2013-3-18 12:52
String类是不可变类,一旦被创建,包含在这个对象中的字符序列是不可改变的,在创建时可以使用“+”,创建 ...

谢谢你的回答!
回复 使用道具 举报
王军行 发表于 2013-3-18 13:43
String 类代表字符串。字符串是常量,它们的值在创建之后不能改变。
StringBuffer是字符串缓冲区,是一个容 ...

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

谢谢你的回答!
回复 使用道具 举报
施家雄 发表于 2013-3-19 00:22
谢谢你的回答。我更想知道“+”、“concat“、“append”,它们在连接字符串时是怎么个情况。 ...

其实“+” “concat”都是通过append实现的。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。就是说字符串连接用的就是缓冲区+和concat都是使用了缓冲区 调用了StringBuilder的append方法和toString方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马