关于String和StringBuilder、StringBuffer的区别?
2016-06-07 17:05
453 查看
package com.other; /*Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以 储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改 变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。 StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在 单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比 StringBuffer要高。 String 类代表字符串,字符串是常量,它们的值在创建之后不能改变,String每次赋值都new一次,StringBuffer 只在开始时new一次,然后在后面追加字符串,StringBuilder效率最高,但不安全(因为是单线程) */ public class StringBijiao { public static void main(String[] args) { //=============================== // String String tempstr = "abcdefghijklmnopqrstuvwxzy"; int times = 5000; long lstart2 = System.currentTimeMillis();// 获取系统当前时间 String str = new String(""); // 或String str=""; for (int i = 0; i < times; i++) { str += tempstr; // sb.append(tempstr); } long lend2 = System.currentTimeMillis(); long time2 = (lend2 - lstart2); System.out.println("26个字母相加" + times + "次用了" + time2 + " 毫秒"); // ============================== // StringBuffer /* String tempstr="abcdefghijklmnopqrstuvwxzy"; int times=5000; long lstart2=System.currentTimeMillis();//获取系统当前时间 StringBuffer sb=new StringBuffer(); for(int i=0;i<times;i++){ sb.append(tempstr); } long lend2=System.currentTimeMillis(); long time2=(lend2-lstart2); System.out.println("26个字母相加"+times+"次用了"+time2+" 毫秒");*/ // ============================== // StringBuilder /* String tempstr="abcdefghijklmnopqrstuvwxzy"; int times=5000; long lstart2=System.currentTimeMillis();//获取系统当前时间 StringBuilder sb=new StringBuilder(); for(int i=0;i<times;i++){ sb.append(tempstr); } long lend2=System.currentTimeMillis(); long time2=(lend2-lstart2); System.out.println("26个字母相加"+times+"次用了"+time2+" 毫秒");*/ } }
Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer要高。
以上代码可以区别三种类型在运行时的区别,运算次数设置太小的话效果不明显,代码没有封装,注释解注后即可测试相应的类型(注释其他方法)
相关文章推荐
- Leetcode 303. Range Sum Query - Immutable
- UIScrollView 用法详解
- HBuilder配置SVN
- Permutation Sequence
- [GitHub]第七讲:GitHub issues
- [GitHub]第七讲:GitHub issues
- Burpsuite视频教程(更新中)
- easyui远程ajax验证
- vue.js
- [leetcode] 300. Longest Increasing Subsequence
- 去掉UISearchBar的那个灰色背景框,,
- 导航栏渐变透明&下拉image放大
- Hadoop 2.x build native library on Mac os x
- es中的query
- UITableView 防止touch被吃掉
- j解决ueditor 字体 字号下拉框不显示 的问题
- druid sql监控 简单配置(绝对管用,测试通过)
- UIView 的Transform属性以及 CGAffineTransform的使用
- Xcode使用介绍之二:创建UI界面+连线
- iOS中常见的6种传值方式,UIPageViewController