[java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较
java中清空StringBuffer的方法,我能想到的有4种:
1. buffer.setLength(0); 设置长度为0
2. buffer.delete(0, buffer.length()); 删除0到末尾
3. buffer.replace(0, buffer.length(), ""); 替换所有内容为空字符串
4. buffer=new StringBuffer(); 创建新的StringBuffer
那么这4种方法哪种消耗的时间最少呢?
我对上面4种方法分别进行了百万次的循环,代码如下:
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();
Long time1=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.setLength(0);
}
Long time2=System.currentTimeMillis();
System.out.println("setLength cost==="+(time2-time1));
Long time3=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.delete(0, buffer.length());
}
Long time4=System.currentTimeMillis();
System.out.println("delete cost==="+(time4-time3));
Long time5=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.replace(0, buffer.length(), "");
}
Long time6=System.currentTimeMillis();
System.out.println("replace cost==="+(time6-time5));
Long time7=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer=new StringBuffer();
}
Long time8=System.currentTimeMillis();
System.out.println("new cost==="+(time8-time7));
}
}
得到了如下结果,为了排除偶然性,进行了5次测试:


通过上面的结果我们可以看出:
最耗费时间的是创建对象的方法(new StringBuffer()),其次是设置长度的方法(setLength(0));
最节省时间的是删除的方法(delete(0, buffer.length())),其次是替换的方法(replace(0, buffer.length(), ""))。
[java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较的更多相关文章
- 2017/05/16 java 基础 随笔
1,成员变量和局部变量的区别 1)在内存中的位置不同 成员变量:在堆内存(成员变量属于对象,对象进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) 2)初始化值不同 成员变量:有默认初始 ...
- 【java提高】(16)---java注解(Annotation)
java提高(16)---java注解 注解含义注解是JDK1.5之后才有的新特性,它相当于一种标记,在程序中加入注解就等于为程序打上某种标记,之后又通过类的反射机制来解析注解. 一.JDK自带注解 ...
- Java 学习笔记(16)——Java数据库操作
数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...
- 2017.10.16 java中getAttribute和getParameter的区别
(1)getAttribute:表示得到 域中的对象 返回的是OBJ类型; getParameter:表示 得到 传递的参数 返回的是String类型; 也就是getAttribute获得的值需要进 ...
- 2017/05/02 java 基础 随笔
1.PrtSc键是截屏键 打开画图软件 ctrl+v就可以复制到 2.win7以上可以 在当前目录下shift+右键 3.junit和javaweb应用的main函数在哪里? java程序跑起 ...
- 2017/05/21 java 基础 随笔
工具类:所有的方法都是静态的,如果一个类中所有的方法都是静态的,需要再多做一步,私有构造方法,不让其他类创建本类对象. 生成文档: java.lang 包不用导入 常见代码块的应用 * a:局部 ...
- 2017/05/07 java 基础 随笔
1.^异或 逻辑运算符 两边相同为false 不同为ture 2.键盘录入 package com.huawei; /** * 键盘录入 * @author Eric * */ import j ...
- 2017/05/04 java 基础 随笔
1.java变量在使用之前必须初始化 int a; a=10 ; int b; 没有初始化,也没有使用也不报错 2.强制类型转换 int a=8: byte b=6; b=(byte)(a+b); ...
- 2017/05/20 java 基础 随笔
static 关键字的特点 1.随着类的加载而加载 2.优先于对象存在 3.被类的所有对象共享 如果某个成员变量是被所有对象共享的,那么他就应该定义为静态的 4.可以通过类名调用 其实它本身也可以通过 ...
随机推荐
- Android开发 ---实现ListView的A-Z字母排序和过滤搜索功能
效果图: 1.activity.xml 描述: 线性布局中一个层叠布局 <?xml version="1.0" encoding="utf-8"?> ...
- kolla-ansible配置cinder 的ceph的多种后端存储池【转】
在实际的使用中,openstack后端采用ceph存储,存储磁盘类型有SATA和SSD,这里如果想基于存储驱动器提供多种云硬盘类型,可以基于下面的配置完成 点击查看配置详情
- c++结构体的排序
出处:https://blog.csdn.net/weixin_39460667/article/details/82695190 引入头文件 #include<algorithm> 结构 ...
- 线性表seqList类及其父类list,模板类
seqList模板类,线性表代码 # include "list.h" //代码清单2-2 顺序表类的定义和实现 // The Definition of seqList temp ...
- mysql中有关查询的技巧方法
* 查最高值或者最低值对应行的数据: 查询Score表中的最高分的学生学号和课程号: 两种方法(子查询或者排序): 子查询法:select sno,cno from score where degre ...
- 莫烦tensorflow(7)-mnist
import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data#number 1 to 10 dat ...
- Homebrew简介及安装,Mac 包管理
Homebrew简介及安装 Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 Linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两 ...
- [LeetCode&Python] Problem 744. Find Smallest Letter Greater Than Target
Given a list of sorted characters letters containing only lowercase letters, and given a target lett ...
- js 数字随机滚动(数字递增)
HTML: <div class="textMon"> <img src="./img/20180830160315.png" alt=&qu ...
- 《DSP using MATLAB》Problem 7.10
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...