首页 > 编程语言 >java-字符串拼接几种方法的性能比较

java-字符串拼接几种方法的性能比较

时间:2022-10-28 14:37:24浏览次数:53  
标签:java String format StringBuilder System MessageFormat 耗时 拼接 字符串


java-字符串拼接几种方法的性能比较

一、测试方法:
String.format();
MessageFormat.format();
StringBuilder();

二、测试结果:
性能:StringBuilder > MessageFormat > String

三、运行结果:
++++++++++++++++++++++++
times=100000
String.format 耗时:660
MessageFormat.format 耗时:247
StringBuilder 耗时:4
++++++++++++++++++++++++
times=1000000
String.format 耗时:2128
MessageFormat.format 耗时:829
StringBuilder 耗时:7
++++++++++++++++++++++++
times=10000000
String.format 耗时:13809
MessageFormat.format 耗时:5823
StringBuilder 耗时:77

四、测试代码:

public static void main (String[] args){
int[] arr = new int[]{100000,1000000,10000000};
long begin=0;
long end=0;
for(int item:arr){
System.out.println("++++++++++++++++++++++++");
System.out.println("times="+item);
//String.format
begin = System.currentTimeMillis();
for(int i=0;i<item;i++){
String s = String.format("%s,%s,%s,%s","1111","2222","3333","4444");
}
end = System.currentTimeMillis();
System.out.println("String.format 耗时:"+(end-begin));

//MessageFormat
begin = System.currentTimeMillis();
for(int i=0;i<item;i++){
String s = MessageFormat.format("{0},{1},{2},{3}","1111","2222","3333","4444");
}
end = System.currentTimeMillis();
System.out.println("MessageFormat.format 耗时:"+(end-begin));

//stringformat
begin = System.currentTimeMillis();
StringBuilder sbd;
for(int i=0;i<item;i++){
sbd = new StringBuilder();
String s = sbd.append("1111").append(",")
.append("2222").append(",")
.append("3333").append(",")
.append("4444").toString();
}
end = System.currentTimeMillis();
System.out.println("StringBuilder 耗时:"+(end-begin));
}
}

 

标签:java,String,format,StringBuilder,System,MessageFormat,耗时,拼接,字符串
From: https://blog.51cto.com/u_4518216/5804847

相关文章

  • 力扣907(java)-子数组的最小值之和(中等)
    题目:给定一个整数数组arr,找到min(b) 的总和,其中b的范围为arr的每个(连续)子数组。由于答案可能很大,因此返回答案模10^9+7。 示例1:输入:arr=[3,1,2,4]输......
  • java-floyd最短距离算法
    java-floyd最短距离算法publicstaticvoidmain(String[]args){MatrixDGmatrixDG=newMatrixDG();System.out.println("初始化邻接矩阵");matrixDG.print......
  • Java-五种线程池,四种拒绝策略,三类阻塞队列
    Java-五种线程池,四种拒绝策略,三类阻塞队列(常用)三类阻塞队列:   //1有界队列   workQueue=newArrayBlockingQueue<>(5);//基于数组的先进先出(FIFO)队列,支持公......
  • java-并发集合-阻塞队列 LinkedBlockingQueue 演示
    java-并发集合-阻塞队列LinkedBlockingQueue演示packageme.grass.demo.concuronte;importjava.util.Date;importjava.util.concurrent.CountDow......
  • java-并发集合-并发hash表 ConcurrentHashMap 演示
    java-并发集合-并发hash表 ConcurrentHashMap演示packageme.grass.demo.concurrent;importjava.util.Date;importjava.util.concurrent.Concurr......
  • java-并发集合-并发队列 ConcurrentLinkedQueue 演示
    java-并发集合-并发队列ConcurrentLinkedQueue演示目标:模拟5个线程同时并发读取“并发队列”,并使用CountDownLatch类协助计算消费耗时。pack......
  • 使用jvmti dll |so 加密java class jar包
    dll代码 //dllmain.cpp:定义DLL应用程序的入口点。#include"pch.h"#include<iostream>#include<jni_md.h>#include<jni.h>#include<jvmti.h>#include......
  • Java集合
    List和Set的区别:List:有序,按对象进入的顺序保存对象,可重复,允许多个Null元素对象,可以使用Iterator取出所有元素,再逐一遍历,还可以使用get(intindex)获取指定下标的元素......
  • Java程序员就业方向主要有哪几个?
    1、Android开发Android是全球最大的智能手机操作系统,根据StrategyAnalytics最新研究报告显示,全球智能手机出货量在2016年第三季度达到3.75亿台。Android操作系统获得了创......
  • 【JavaSE】Java常用类
    1.String的特性代表字符串,java中所有字符串字面值都作为此类的实现例实现。String是一个final类,不能被继承。String实现了Serialiable,表示字符串支持序列化,实现了Comarabl......