没有合适的资源?快使用搜索试试~ 我知道了~
+作为java中的拼接字符串的功能
4星 · 超过85%的资源 需积分: 27 14 下载量 171 浏览量
2013-10-28
14:09:20
上传
评论
收藏 3KB TXT 举报
温馨提示
试读
3页
java+作为java中的拼接字符串的功能
资源推荐
资源详情
资源评论
Java String 字符串连接
发表于1043 天前 ? CoreJava ? 评论数 1 ? 被围观 630 views+ 你或许已经很多次被告知,不要使用’+’来连接字符串。我们都知道它对于性能不利。但是,你曾经研究过它的真实性吗?你知道在程序的内部是如何执行的吗?让我们来一起探索String字符串连接背后的东西吧。
在最初使用jdk1.2的时候,每个人都使用’+’来连接两个String字面值。之所以称之为字面值,是因为String类型是不可以改变的。那么当我们执行以下代码时将会发生什么:
String fruit = “Apple”; fruit = fruit + “World”;
在上面的Java代码段中,看似fruit变量被修改了。但事实上它并没有。直到JDK1.4 StringBuffer才在内部被使用,知道JDK1.5 StringBuffer才被用作连接字符串。通过StringBuffer或StringBuilder连接字符串之后,由此产生的对象再转换成String。
既然Java专家们说,“不要使用’+’,而要用StringBuilder”。如果’+’将会在内部使用StringBuffer,那两种字符串连接的方法还有什么区别呢。下面的例子中,我使用了’+’和StringBuffer作为两个不同的实例。实例1中,我使用’+’连接字符串,实例2中,我将String转换成StringBuffer然后再连接字符串,之后再转换成String。我使用timer来记录所用的时间。
看看输出结果(如果你运行这个程序,由于你的硬件或软件配置不同,结果可能会稍有不同)。这两个实例的结果让人吃惊。
我的疑问是,如果’+’在内部使用StringBuffer做字符串连接,那为什么花费的时间会有如此大的差距呢?
让我来解释这个问题吧,当’+’被使用时,调用步骤如下:
1.创建一个StringBuffer对象
2.String1被复制到新创建的StringBuffer对象中
3.‘*’被附加到StringBuffer对象中(连接)
4.结果被转换回String对象
5.String1的引用被指向新的String地址
6.String1引用之前指向的String对象被置为null.
希望通过上面的步骤说明弄清楚严肃的性能问题ihe为什么使用StringBuffer或StringBuilder(从java1.5开始)来连接字符串。
因此,你就知道了,最初是’+’,然后StringBuffer出现了,之后StringBuilder出现。当然Java在一点点进步!
测试字符串连接的Java源代码:
class Clock {
发表于1043 天前 ? CoreJava ? 评论数 1 ? 被围观 630 views+ 你或许已经很多次被告知,不要使用’+’来连接字符串。我们都知道它对于性能不利。但是,你曾经研究过它的真实性吗?你知道在程序的内部是如何执行的吗?让我们来一起探索String字符串连接背后的东西吧。
在最初使用jdk1.2的时候,每个人都使用’+’来连接两个String字面值。之所以称之为字面值,是因为String类型是不可以改变的。那么当我们执行以下代码时将会发生什么:
String fruit = “Apple”; fruit = fruit + “World”;
在上面的Java代码段中,看似fruit变量被修改了。但事实上它并没有。直到JDK1.4 StringBuffer才在内部被使用,知道JDK1.5 StringBuffer才被用作连接字符串。通过StringBuffer或StringBuilder连接字符串之后,由此产生的对象再转换成String。
既然Java专家们说,“不要使用’+’,而要用StringBuilder”。如果’+’将会在内部使用StringBuffer,那两种字符串连接的方法还有什么区别呢。下面的例子中,我使用了’+’和StringBuffer作为两个不同的实例。实例1中,我使用’+’连接字符串,实例2中,我将String转换成StringBuffer然后再连接字符串,之后再转换成String。我使用timer来记录所用的时间。
看看输出结果(如果你运行这个程序,由于你的硬件或软件配置不同,结果可能会稍有不同)。这两个实例的结果让人吃惊。
我的疑问是,如果’+’在内部使用StringBuffer做字符串连接,那为什么花费的时间会有如此大的差距呢?
让我来解释这个问题吧,当’+’被使用时,调用步骤如下:
1.创建一个StringBuffer对象
2.String1被复制到新创建的StringBuffer对象中
3.‘*’被附加到StringBuffer对象中(连接)
4.结果被转换回String对象
5.String1的引用被指向新的String地址
6.String1引用之前指向的String对象被置为null.
希望通过上面的步骤说明弄清楚严肃的性能问题ihe为什么使用StringBuffer或StringBuilder(从java1.5开始)来连接字符串。
因此,你就知道了,最初是’+’,然后StringBuffer出现了,之后StringBuilder出现。当然Java在一点点进步!
测试字符串连接的Java源代码:
class Clock {
资源评论
- wq_4803302013-11-07我觉得 没啥帮助 还不如网上搜搜 但是还是感谢 作者吧
u011148432
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功