String、StringBuffer 、StringBuilder 的区别(转)
String 字符串常量
package com.hct.test;import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** @author: chengtai.he* @created:2009-12-9 上午09:59:57*/ public class StringBuilderTester {private static final String base = " base string. ";private static final int count = 2000000;public static void stringTest() {long begin, end;begin = System.currentTimeMillis();String test = new String(base);for (int i = 0; i < count/100; i++) {test = test + " add ";}end = System.currentTimeMillis();System.out.println((end - begin)+ " millis has elapsed when used String. ");}public static void stringBufferTest() {long begin, end;begin = System.currentTimeMillis();StringBuffer test = new StringBuffer(base);for (int i = 0; i < count; i++) {test = test.append(" add ");}end = System.currentTimeMillis();System.out.println((end - begin)+ " millis has elapsed when used StringBuffer. ");}public static void stringBuilderTest() {long begin, end;begin = System.currentTimeMillis();StringBuilder test = new StringBuilder(base);for (int i = 0; i < count; i++) {test = test.append(" add ");} end = System.currentTimeMillis();System.out.println((end - begin)+ " millis has elapsed when used StringBuilder. ");}public static String appendItemsToStringBuiler(List list) {StringBuilder b = new StringBuilder();for (Iterator i = list.iterator(); i.hasNext();) {b.append(i.next()).append(" ");}return b.toString();}public static void addToStringBuilder() {List list = new ArrayList();list.add(" I ");list.add(" play ");list.add(" Bourgeois ");list.add(" guitars ");list.add(" and ");list.add(" Huber ");list.add(" banjos ");System.out.println(StringBuilderTester.appendItemsToStirngBuffer(list));}public static String appendItemsToStirngBuffer(List list) {StringBuffer b = new StringBuffer();for (Iterator i = list.iterator(); i.hasNext();) {b.append(i.next()).append(" ");}return b.toString();}public static void addToStringBuffer() {List list = new ArrayList();list.add(" I ");list.add(" play ");list.add(" Bourgeois ");list.add(" guitars ");list.add(" and ");list.add(" Huber ");list.add(" banjos ");System.out.println(StringBuilderTester.appendItemsToStirngBuffer(list));}public static void main(String[] args) {stringTest();stringBufferTest();stringBuilderTest();addToStringBuffer();addToStringBuilder();} }
运行结果:
5266 millis has elapsed when used String. 375 millis has elapsed when used StringBuffer. 281 millis has elapsed when used StringBuilder. I play Bourgeois guitars and Huber banjos I play Bourgeois guitars and Huber banjos
从上面的结果来看,这三个类在单线程程序中的性能差别一目了然,采用String对象时,即使运行次数仅是采用其他对象的1/100,其执行时间仍然比其他对象高出25倍以上;而采用StringBuffer对象和采用StringBuilder对象的差别也比较明显,前者是后者的1.5倍左右。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;当然,如果要保证线程安全,自然非StringBuffer莫属了。
转载于:https://www.cnblogs.com/fangchongyan/p/5356923.html
String、StringBuffer 、StringBuilder 的区别(转)相关推荐
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- String StringBuffer StringBuilder的区别
简单的事情做到极致也是一种能力. 首先,说一下目前我还没进行整理的情况下,我的理解: String 不可修改 修改后相当于又新创建创建一个字符串 比如: String a = "abc&qu ...
- 【翻译】Java中String, StringBuffer, StringBuilder的区别
2019独角兽企业重金招聘Python工程师标准>>> String 是 Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...
- java stringbuffer原理_深入理解String, StringBuffer, StringBuilder的区别(基于JDK1.8)
String.StringBuffer.StringBuilder都是JAVA中常用的字符串操作类,对于他们的区别大家也都能耳熟能详,但底层到底是怎样实现的呢?今天就再深入分析下这三种字符串操作的区别 ...
- String,StringBuffer,StringBuilder的区别
1 Java String 类是字符串常量 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 需要注意的是,String的值是 ...
- Java中String,StringBuffer,StringBuilder的区别
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 运行速度 StringBuilder > StringBuffe ...
- String, StringBuffer,StringBuilder
String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...
- StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别
1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...
- 116day(String,StringBuffer,StringBuilder,模拟器和虚拟机的区别,复合命题的种类)
<2018年2月4日>[连续116天] 标题:String,StringBuffer,StringBuilder,模拟器和虚拟机的区别,复合命题的种类: 内容: A.详见http://bl ...
- String StringBuffer StringBuilder区别与联系
String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...
最新文章
- 5地图组件 uni_uni-app学习笔记(一)-- uni-app简介
- 模拟问路场景理解递归
- 在eclipse及myEclipse下安装插件之方法
- MySQL Replication--复制异常1
- Vue2.x通用条件搜索组件的封装及应用
- Cdn间隙性故障总结
- Linux执行fastqc报错Exception in thread “main“ java.awt.HeadlessException: No X11 DISPLAY variable was s
- 如何用Camtasia为“微课”视频添加光标效果?
- LVS(三)LVS集群NAT模式
- JavaScript正则表达式学习笔记之一 - 理论基础
- myeclipse使用(技术和快捷键)
- OSG学习之几何图形
- Docker硬盘空间使用分析与清理
- GEO数据库学习二(ID转换)
- 阿里云服务器白嫖和购买教程——学生向
- 视频语音如何翻译成文字?
- 电气EPlan软件第一章到第五章的学习
- 如何通过优化网站内容提高外贸网站的谷歌排名?
- 秋荣创投:本品牌成立的意义与价值、使命愿景价值观
- 硬盘无法格式化怎么解决?数据丢失怎么恢复?
热门文章
- java.lang.UnsupportedOperationException: null at java.util.AbstractList.add(AbstractList.java:148)
- java用循环做猜拳_java用循环方式实现和计算机玩猜拳的程序
- 原生JS那些事:原生JS添加和删除class类名
- 勒索软件再次降临 教育网为什么成为重灾区
- scrapy 伪装代理和fake_userAgent的使用
- android 电话拨号器
- PhpStorm下Laravel代码智能提示
- Silverlight 密码框 Focus
- Java实现的基于socket的一次通信
- [Android实例] 天天动听 悬浮歌词(迷你歌词)效果解读