文档章节

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

SuShine
 SuShine
发布于 2015/06/25 15:28
字数 208
阅读 8
收藏 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
粉丝 123
博文 491
码字总数 141753
作品 0
朝阳
后端工程师
源码|String拼接操作”+”的优化?

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

monkeysayhi
2017/11/06
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
你必须搞清楚的String,StringBuilder,StringBuffer

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

Howie_Y
07/19
0
0
Java与js拼接字符串

import java.util.ArrayList;import java.util.List;import org.apache.commons.lang.StringUtils;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public c......

上班不要玩手机
2016/12/01
7
0

没有更多内容

加载失败,请刷新页面

加载更多

正弦 余弦 角度 用于画时钟

<html> <head> <title>时钟</title> </head> <style> #canvas{ background: #1977ca } </style>......

一箭落旄头
36分钟前
3
0
drupal7自定义模块之表单(新手向)

前段时间要给网站做个高级搜索的功能,但drupal7自带的搜索远远无法满足需求,便有了自己开发的需求 我以前没有接触过drupal,做这个功能也是困难重重,几乎是从零开始,我将目光放到了自定义模块...

gcudwork
41分钟前
1
0
驰狼课堂

http://www.chilangedu.com/

求是科技
58分钟前
0
0
jumpserver 报错"Incorrect string value

申明 本文所有内容参考自jumpserver记录命令无法入库问题 #1773 简介 jumpserver 1.4.0在jumpserver.log中大量报错,错误日志 File "/opt/jumpserver/apps/terminal/api.py", line 246, i...

zhnxin
今天
2
0
用户管理相关配置文件及命令

9月19日任务 2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 扩展知识 实用小工具 简单命令行下实现Linux/Windows文件互传 前提:使用远程工具Xsh...

robertt15
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部