`
lzy719
  • 浏览: 5812 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类

浅谈java中几种字符串拼接

阅读更多
   当我们需要对字符串进行拼接时,我们首先想到的是最简单直观的String中的+=,但是,这种方式是不是最优的呢,如果是在次数很多的循环中呢?于是探究了java中字符串拼接的四种方法,比较了一下他们的利弊关系。
下面是测试的代码:


public class StringJoint {
private int count = 50000;
public void direct(){
//直接拼接字符串
long start = System.currentTimeMillis();
String s = "";
for(int i=0;i<count;i++){
s =s+"a";
}
long end = System.currentTimeMillis();
System.out.println("拼接  "+count+" 次");
System.out.println("直接拼接用时:"+(end-start));
}
public void concat(){
//Concat拼接字符串
long start = System.currentTimeMillis();
String sConcat = "";
for(int i=0;i<count;i++){
sConcat =sConcat.concat("a");
}
long end = System.currentTimeMillis();
System.out.println("Concat用时:"+(end-start));
}
public void stringBurrer(){
//StringBuffer拼接字符串
long start = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for(int i=0;i<count;i++){
sb.append("a");
}
long end = System.currentTimeMillis();
System.out.println("StringBuffer用时:"+(end-start));
}
public void stringBuilder(){
//StringBuilder拼接字符串
long start = System.currentTimeMillis();
StringBuilder sBulider = new StringBuilder();
for(int i=0;i<count;i++){
sBulider.append("a");
}
long end = System.currentTimeMillis();
System.out.println("StringBuilder用时:"+(end-start));
}

public static void main(String[] args) {
StringJoint sj =new StringJoint();
sj.direct();
sj.concat();
sj.stringBurrer();
sj.stringBuilder();
}
}
运行结果:
拼接  50000 次
直接拼接用时:1575
Concat用时:788
StringBuffer用时:3
StringBuilder用时:2
以上结果单位是毫秒,从运行结果我们得到以下心得:
1.String简单实用可观,String的+本来就是用StringBuilder或StringBuffer和他们的append()方法实现的,关键是不是同一个StringBuilder/StringBuffer。因为String是一个常类(初始化后就不会改变的类),在循环里用+=之类的方式来拼接字符串的问题就出在每轮循环里都new了一个StringBuilder/StringBuffer来做拼接,然后toString()完就抛弃了,等下轮循环进来又再new一个。
2.concat是内部机制实现,比+的方式好了不少,但是由于额外的创建StringBuilder和
做append(str).append(str).toString()的操作,使得concat的性能会受到一些影响
3.StringBuilder的出现就是用来替换StringBuffer的,StringBuilder的速度最快,但其有线程安全的问题,而且只有JDK5支持。
因此我们在做简单少量的字符串拼接时,可以使用String或者concat来实现,当需要大量的字符串拼接(特别是在循环中),且在不考虑线程安全和同步的情况下,使StringBuilder和StringBuffer的性能最优。
分享到:
评论

相关推荐

    浅谈Java字符串Java开发Java经验技巧共11页.p

    在Java中,字符串是编程中经常遇到的基本数据类型,对于任何Java开发者来说,理解和掌握字符串的使用至关重要。这份资料很可能是由一位经验丰富的Java开发者编写的,分享了他们在实际开发过程中的技巧和经验。 在...

    浅谈Java中Mysql数据库的连接与操作.pdf

    总结来说,本文详细介绍了Java中MySQL数据库连接和操作的基本步骤,强调了数据库在软件开发中的重要性,并简要介绍了数据挖掘的概念、方法和工具。通过对这些知识点的了解和掌握,开发者能够更加高效地进行软件开发...

    浅谈Java字符串编程开发技术共3页.pdf.zip

    字符串连接是常见的操作,Java中的`+`运算符可以用于连接字符串,但这可能会导致性能问题,特别是当连接大量字符串时。为了优化,可以使用`StringBuilder`或`StringBuffer`类,它们提供动态增长的容量,并且支持通过...

    浅谈Java优势

    浅谈Java优势,关于java优势......

    浅谈Java中的几种随机数

    ### 浅谈Java中的几种随机数 在编程领域,随机数生成是不可或缺的一部分,尤其在游戏开发、密码学、统计模拟等应用场景中扮演着至关重要的角色。Java作为一门广泛使用的编程语言,提供了多种生成随机数的方式,每种...

    Java 字符串常用方法

    以下是一些Java `String`类中常用的方法,这些方法对于理解和操作字符串至关重要。 1. **创建字符串** - `new String()`: 使用此构造函数创建一个新的字符串对象,可以传入字符数组或另一个字符串作为参数。 - `...

    浅谈java 字符串,字符数组,list间的转化

    在Java中,字符串到字符数组的转换可以通过`toCharArray()`方法实现。例如: ```java String str = "Hello"; char[] charArray = str.toCharArray(); ``` 这将创建一个字符数组,其中包含字符串`str`中的...

    浅谈JavaScript字符串拼接

    此外,利用数组拼接字符串的一个进阶用法是封装类似于Java中的StringBuffer类来完成字符串的拼接。通过定义一个StringBuffer类,我们可以创建一个可以在内部通过append方法不断添加字符串的类。当需要最终拼接成一个...

    浅谈java中字符串数组、字符串、整形之间的转换

    Java 中字符串数组、字符串、整形之间的转换 在 Java 编程中,字符串数组、字符串、整形之间的转换是非常重要的操作。今天,我们将详细介绍这些转换的实现方法。 字符串数组转字符串 在 Java 中,将字符串数组...

    浅谈java中的四个核心概念

    ### 浅谈Java中的四个核心概念 随着信息技术的飞速发展与互联网的普及,Java作为一门面向对象的、跨平台的编程语言,在软件开发领域占据了举足轻重的地位。Java不仅仅是一门语言,它更是一个庞大的技术平台。为了更...

    总结一——浅谈Java的类与对象

    在Java中,类可以被看作是蓝图或者模板,它定义了一组特性(属性)和行为(方法)。这些特性描述了对象的状态,而行为则规定了对象能够执行的操作。例如,我们可以创建一个名为“Person”的类,其中包含属性如姓名、...

    JAVA小论文(浅谈String类)

    Java的小论文浅谈String类,讨论了Java中字符串的存储和处理。Java提供了String类、StringBuffer类和StringTokenizer类来存储和处理字符串。在大多数情况下,可以使用String类来创建字符串。 String类在存储和处理...

    浅谈Java软件测试.pdf

    总结而言,Java软件测试是软件测试行业中的一个重要分支,随着Java语言在各类应用中的广泛使用,Java软件测试的研究和实践也在不断深入。要提高软件质量,就必须重视软件测试,尤其是Java软件测试的研究和应用,并...

    浅谈Java字符串

    Java中的字符串处理是编程中常见的任务,涉及到三个主要类:String、StringBuffer和StringBuilder。这三个类都与字符串处理密切相关,但各自有不同的特性和用途。 首先,`String`类表示字符串常量,一旦创建就不可...

    JAVA图片格式的字符串验证码

    验证码是一种用于验证用户身份的安全机制,它通常由随机生成的一串字符组成,这些字符可能是数字、字母或其他符号。在JAVA语言中,实现图片格式的验证码涉及到图像处理、字符串生成以及随机数生成等多个技术领域。接...

    浅谈jquery拼接字符串效率比较高的方法

    为了提高字符串拼接的效率,有几种方法可以采用。本文中提到的是利用jQuery中的方法来实现高效的字符串拼接。 1. 使用数组存储字符串片段,利用数组的join方法来合并字符串:这是一种常见的做法,可以有效提高性能...

Global site tag (gtag.js) - Google Analytics