`
李灵晖-raylee
  • 浏览: 135704 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

java基础入门-还原字符串的拼接的过程

 
阅读更多

平常我们很多时候都会使用字符串的拼接,但是为什么使用“+”号就是比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, 各种字符串相似性和距离算法.zip

    java-string-similarity, 各种字符串相似性和距离算法 java-string-similarity 实现不同字符串相似度和距离度量的库。 目前已经实现了许多算法( 包括Levenshtein编辑距离和 sibblings,jaro winkler,最长公共子序列...

    字符串拼接工具

    "字符串拼接工具"就是针对这类需求而设计的小型实用程序。它能够帮助开发者快速、有效地组合多个字符串,添加前缀或后缀,使得多行文本的格式化变得简单。 在编程中,字符串拼接通常是通过字符串连接运算符或者使用...

    Java基础入门--教学课件--PPT

    这份"Java基础入门--教学课件--PPT"旨在帮助初学者掌握Java编程的基本概念和语法,为深入学习Java打下坚实的基础。 1. **Java简介**: Java由Sun Microsystems(现为Oracle公司)于1995年推出,由詹姆斯·高斯林等...

    JAVA的字符串拼接[参照].pdf

    在Java编程中,字符串拼接是一项常见的操作,特别是在构建动态字符串或者处理文本数据时。本文主要探讨了在Java中几种不同的字符串拼接方法的性能差异,包括使用操作符`+`、`String.concat()`、`StringBuffer.append...

    动态规划算法--1-26对应a-z字符串转换

    动态规划算法:从1到26分别对应a-z的每一个字母,输入一串数字的字符串,转换为字母,输出所有可能的字母序列。如123-&gt;abc、lc、aw 本资源是按照二叉树的思想解决该问题。从字符串的头部开始,每次可以取一个或者两...

    头歌python程序设计答案-07-字符串拼接.ev4.rar

    本资源"头歌python程序设计答案-07-字符串拼接.ev4.rar"可能是一个教学视频或课程资料,专注于讲解如何在Python中进行字符串的拼接操作。这里我们将详细讨论Python中的字符串拼接方法。 首先,Python中的字符串是不...

    存储过程拼接字符串

    当我们需要在存储过程中拼接字符串时,通常是为了解决动态SQL构造或者生成报告等需求。在本文中,我们将深入探讨如何在SQL中进行字符串拼接。 一、SQL Server中的字符串拼接 1. 使用`+`运算符 在SQL Server中,最...

    Python字符串拼接方法详解.docx

    Python 字符串拼接方法详解 Python 中的字符串拼接方法有多种,本文将通过实例详细讲解这几种方法的使用及各自的特点。 字符串拼接方法一:使用“+”连接 Python 中最简单的字符串拼接方法是使用“+”连接。例如...

    java实验-字符串.docx

    在Java编程中,字符串是经常使用的数据类型,用于表示文本信息。本实验主要涉及三个方面的内容:字符串的基本操作,字符串的比较以及不同字符串类(String和StringBuffer)的使用和性能分析。 首先,我们来看第一个...

    jquery拼接ajax 的json和字符串拼接的方法

    整理文档,搜刮出一个jquery拼接ajax 的json和字符串拼接的代码,稍微整理精简一下做下分享。 jQuery拼接字符串ajax &lt;form id="myForm" action="#"&gt; &lt;input name="name"/&gt; &lt;input name="age"/&gt;...

    Oracle10g自定义聚合函数(字符串拼接)

    * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000'...

    Java获取随机字符串

    在Java中生成随机字符串是一项基础而重要的任务,不同的应用场景可能需要选择不同的方法。通常情况下,对于普通应用,使用`java.util.Random`就足够了;而对于安全性要求较高的场景,则推荐使用`java.security....

    02-python-入门-数据类型-数字变量-字符串-索引和分片

    在这个"02-python-入门-数据类型-数字变量-字符串-索引和分片"的学习笔记中,我们将深入探讨Python的基础知识,包括数字变量、数据类型以及字符串的索引和分片操作。 首先,让我们从“02.01-入门演示.ipynb”开始,...

    java代码-使用java解决xml--查找并替换字符串(避免乱码)的问题的源代码

    java代码-使用java解决xml--查找并替换字符串(避免乱码)的问题的源代码 ——学习参考资料:仅用于个人学习使用!

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节;

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...

    6-4 字符串加密-Java解法,两个类型题都做了解答

    在本主题中,我们将深入探讨Java编程语言中的字符串加密技术,这是软件开发中一个非常重要的领域,特别是对于数据安全和隐私保护。标题提到的“6-4 字符串加密”可能是一个特定的练习或者问题分类,它涉及到使用Java...

    oracle拼接字符串和拼接一列的值

    oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。

    95.java拼接字符串案例.zip

    95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip...

    Java 实例 - 删除字符串中的一个字符源代码+详细教程.zip

    在Java编程语言中,删除字符串中的特定字符是一项常见的任务,特别是在处理用户输入或者文本数据时。这个实例将向我们展示如何实现这一功能。通过提供的详细教程和源代码,我们可以深入理解这一过程。以下是对该主题...

    java 字符串工具类 java 字符串工具类

    java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java 字符串工具类java 字符串工具类 java ...

Global site tag (gtag.js) - Google Analytics