平常我们很多时候都会使用字符串的拼接,但是为什么使用“+”号就是比stringbuilder慢,而且慢很多?
实验
package com.ray.teststring;
/**
* 对比拼接字符串的两种方式
*
* @author ray
* @since 2015-04-19
* @version 1.0
*
*/
public class StringJoint {
/**
* 使用+拼接
*/
public void stringJointWithPlus() {
String str = "";
for (int i = 0; i < 60000; i++) {
str += "a";
}
}
/**
* 使用stringbuilder拼接
*/
public void stringJointWithStringBuilder() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 60000; i++) {
sb.append("a");
}
}
public static void main(String[] args) {
StringJoint stringJoint = new StringJoint();
long beginTime = System.currentTimeMillis();
stringJoint.stringJointWithPlus();
long firstTime = System.currentTimeMillis();
System.out.println(firstTime - beginTime);// 6813
long beginTime2 = System.currentTimeMillis();
stringJoint.stringJointWithStringBuilder();
long secondTime = System.currentTimeMillis();
System.out.println(secondTime - beginTime2);// 16
}
}
下面我们先输出+号操作里面的东西
package com.ray.teststring;
/**
* 对比拼接字符串的两种方式
*
* @author ray
* @since 2015-04-19
* @version 1.0
*
*/
public class StringJoint {
/**
* 使用+拼接
*/
public void stringJointWithPlus() {
String str = "";
for (int i = 0; i < 60000; i++) {
String temp=str;
System.out.println(temp.equals(str));
str += "a";
System.out.println(temp.equals(str));
}
}
/**
* 使用stringbuilder拼接
*/
public void stringJointWithStringBuilder() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 60000; i++) {
sb.append("a");
}
}
public static void main(String[] args) {
StringJoint stringJoint = new StringJoint();
long beginTime = System.currentTimeMillis();
stringJoint.stringJointWithPlus();
long firstTime = System.currentTimeMillis();
System.out.println(firstTime - beginTime);// 6813
long beginTime2 = System.currentTimeMillis();
stringJoint.stringJointWithStringBuilder();
long secondTime = System.currentTimeMillis();
System.out.println(secondTime - beginTime2);// 16
}
}
输出结果:
true
false
true
false
true
false
。。。
从结果上面来看,里面两个对象一直都是交错的不相同
下面我们来还原一下+号的操作:
str += "a";等价于
StringBuilder sb = new StringBuilder();
sb.append("a");
这两句的执行,所以在+的同时不断的new新的对象,所以导致性能低下
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
java-string-similarity, 各种字符串相似性和距离算法 java-string-similarity 实现不同字符串相似度和距离度量的库。 目前已经实现了许多算法( 包括Levenshtein编辑距离和 sibblings,jaro winkler,最长公共子序列...
"字符串拼接工具"就是针对这类需求而设计的小型实用程序。它能够帮助开发者快速、有效地组合多个字符串,添加前缀或后缀,使得多行文本的格式化变得简单。 在编程中,字符串拼接通常是通过字符串连接运算符或者使用...
这份"Java基础入门--教学课件--PPT"旨在帮助初学者掌握Java编程的基本概念和语法,为深入学习Java打下坚实的基础。 1. **Java简介**: Java由Sun Microsystems(现为Oracle公司)于1995年推出,由詹姆斯·高斯林等...
在Java编程中,字符串拼接是一项常见的操作,特别是在构建动态字符串或者处理文本数据时。本文主要探讨了在Java中几种不同的字符串拼接方法的性能差异,包括使用操作符`+`、`String.concat()`、`StringBuffer.append...
动态规划算法:从1到26分别对应a-z的每一个字母,输入一串数字的字符串,转换为字母,输出所有可能的字母序列。如123->abc、lc、aw 本资源是按照二叉树的思想解决该问题。从字符串的头部开始,每次可以取一个或者两...
本资源"头歌python程序设计答案-07-字符串拼接.ev4.rar"可能是一个教学视频或课程资料,专注于讲解如何在Python中进行字符串的拼接操作。这里我们将详细讨论Python中的字符串拼接方法。 首先,Python中的字符串是不...
当我们需要在存储过程中拼接字符串时,通常是为了解决动态SQL构造或者生成报告等需求。在本文中,我们将深入探讨如何在SQL中进行字符串拼接。 一、SQL Server中的字符串拼接 1. 使用`+`运算符 在SQL Server中,最...
Python 字符串拼接方法详解 Python 中的字符串拼接方法有多种,本文将通过实例详细讲解这几种方法的使用及各自的特点。 字符串拼接方法一:使用“+”连接 Python 中最简单的字符串拼接方法是使用“+”连接。例如...
在Java编程中,字符串是经常使用的数据类型,用于表示文本信息。本实验主要涉及三个方面的内容:字符串的基本操作,字符串的比较以及不同字符串类(String和StringBuffer)的使用和性能分析。 首先,我们来看第一个...
整理文档,搜刮出一个jquery拼接ajax 的json和字符串拼接的代码,稍微整理精简一下做下分享。 jQuery拼接字符串ajax <form id="myForm" action="#"> <input name="name"/> <input name="age"/>...
* 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000'...
在Java中生成随机字符串是一项基础而重要的任务,不同的应用场景可能需要选择不同的方法。通常情况下,对于普通应用,使用`java.util.Random`就足够了;而对于安全性要求较高的场景,则推荐使用`java.security....
在这个"02-python-入门-数据类型-数字变量-字符串-索引和分片"的学习笔记中,我们将深入探讨Python的基础知识,包括数字变量、数据类型以及字符串的索引和分片操作。 首先,让我们从“02.01-入门演示.ipynb”开始,...
java代码-使用java解决xml--查找并替换字符串(避免乱码)的问题的源代码 ——学习参考资料:仅用于个人学习使用!
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
在本主题中,我们将深入探讨Java编程语言中的字符串加密技术,这是软件开发中一个非常重要的领域,特别是对于数据安全和隐私保护。标题提到的“6-4 字符串加密”可能是一个特定的练习或者问题分类,它涉及到使用Java...
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip...
在Java编程语言中,删除字符串中的特定字符是一项常见的任务,特别是在处理用户输入或者文本数据时。这个实例将向我们展示如何实现这一功能。通过提供的详细教程和源代码,我们可以深入理解这一过程。以下是对该主题...
java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...