文档章节

关于String 拼接字符串的性能问题

SuShine
 SuShine
发布于 2015/06/25 15:28
字数 208
阅读 9
收藏 0
package com.example.test;
import android.util.Log;
public class TestString {
  
    public void testPlus() {
        String s = "";
        long ts = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            s = s + String.valueOf(i);
        }
        long te = System.currentTimeMillis();
        Log.e("+cost {} ms", te - ts + "");
    }
    
    public void testConcat() {
        String s = "";
        long ts = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            s = s.concat(String.valueOf(i));
        }
        long te = System.currentTimeMillis();
        Log.e("concat cost {} ms", te - ts + "");
    }
    
    
    public void testStringBuffer() {
        StringBuffer sb = new StringBuffer();
        long ts = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            sb.append(String.valueOf(i));
        }
        sb.toString();
        long te = System.currentTimeMillis();
        Log.e("StringBuffer cost {} ms", te - ts + "");
    }
    
    public void testStringBuilder() {
        StringBuilder sb = new StringBuilder();
        long ts = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            sb.append(String.valueOf(i));
        }
        sb.toString();
        long te = System.currentTimeMillis();
        Log.e("StringBuilder cost {} ms", te - ts + "");
    }
}

会发现其实 + 和 stringbuilder在拼接很多的字符串的时候性能差距非常大,

当然 如果拼接两个或者很少的字符串效果就不明显了,:

拼接两个字符串的时候,两种方式都需要创建三个String对象

本文转载自:http://blog.csdn.net/sfshine/article/details/12097143

共有 人打赏支持
SuShine
粉丝 124
博文 518
码字总数 150044
作品 0
朝阳
后端工程师
私信 提问
源码|String拼接操作”+”的优化?

很多讲Java优化的文章都会强调对String拼接的优化。倒不用特意记,本质上在于对不可变类优势和劣势的理解上。 需要关注的是编译器对String拼接做出的优化,在简单场景下的性能能够与StringB...

monkeysayhi
2017/11/06
0
0
String、StringBuffer、StringBuilder有什么区别?

版权声明:本文供交流学习,能够帮助到你是我最大的荣幸! https://blog.csdn.net/u014231523/article/details/81590165 关于String、StringBuffer、StringBuilder在刚开始面试的时候经常被问...

兴国First
08/11
0
0
你必须搞清楚的String,StringBuilder,StringBuffer

String,StringBuilder 以及 StringBuffer 这三个类的关系与区别一直是 Java 的经典问题,这次就来讲一下关于这三个类的一些知识 一. 简单对比 String : 字符常量 StringBuilder : 字符变量...

Howie_Y
07/19
0
0
Android 性能优化之String篇

Android 性能优化之 String篇 关于String相关知识都是老掉牙的东西了,但我们经常可能在不经意的String 字符串拼接的情况下浪费内存,影响性能,也常常会成为触发内存OOM的最后一步。 所以本...

fuchenxuan
2016/11/05
657
1
c#基础系列2---深入理解 String

“大菜”:源于自己刚踏入猿途混沌时起,自我感觉不是一般的菜,因而得名“大菜”,于自身共勉。 扩展阅读:深入理解值类型和引用类型 基本概念 string(严格来说应该是System.String) 类型...

大菜
09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部