`
darrendu
  • 浏览: 197510 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

04_字符串连接

 
阅读更多

1.字符串连接操作符"+",不适合用在大规模字符串连接场合,由于字符串不可变,2个字符串连接在一起时,它们内容都要被拷贝。

 

测试代码:

public class _51StringConcatenation {
	private static final int NUM_ITEMS = 5000;
	private static final String LINE_FOR_ITEM = "DJLKFLDLJKFKJLDKJFKJDKFLKDLKL" +
			"LKJFLKDLKFLKJDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLKKFDFDJFKLKLDFDFKDF";
	
	
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		statement();
		statement2();
		String result = statement3();
		System.out.println(NUM_ITEMS*LINE_FOR_ITEM.length() == result.length());
	}
	
	
	private static String statement(){
		String result = "";
		long start = System.currentTimeMillis();
		
		for(int i=0;i<NUM_ITEMS;i++){
			result += LINE_FOR_ITEM;
		}
		
		System.out.println("String concatention Using Time:"+(System.currentTimeMillis() - start));
		return result;
	}
	
	private static String statement2(){
		StringBuilder result = new StringBuilder();
		long start = System.currentTimeMillis();
		
		for(int i=0;i<NUM_ITEMS;i++){
			result.append(LINE_FOR_ITEM);
		}
		
		System.out.println("String Builder Using Time:"+(System.currentTimeMillis() - start));
		return result.toString();
	}
	
	
	private static String statement3(){
		StringBuilder result = new StringBuilder(NUM_ITEMS*LINE_FOR_ITEM.length());
		long start = System.currentTimeMillis();
		
		for(int i=0;i<NUM_ITEMS;i++){
			result.append(LINE_FOR_ITEM);
		}
		
		System.out.println("String Builder When Allocat Size Using Time:"+(System.currentTimeMillis() - start));
		return result.toString();
	}


}

  打印结果:

 

String concatention Using Time:35172

String Builder Using Time:47

String Builder When Allocat Size Using Time:0

true


具有初始大小StringBuilder性能最好,其次StringBuilder,“+”号连接最差,

测试jdk1.6测试,jdk1.6在编译时,已经把"+"号连接转换成StringBuilder,不知道为何性能还是这么差

分享到:
评论

相关推荐

    学学Python_字符串04_字符串方法01

    本篇文章将深入探讨在"学学Python_字符串04_字符串方法01"这个主题中的关键知识点,包括基本字符串操作、格式化打印以及高级操作。 首先,我们要了解Python中的字符串是不可变的,这意味着一旦创建了一个字符串,就...

    char.zip_char ** labview_entirecft_labview 字符串_labview 字符串_字符串

    1. **字符串操作**:LabVIEW提供了多种字符串函数,如`String Concatenate`(连接字符串)、`String Split`(分割字符串)、`Find Substring`(查找子字符串)、`Replace Substring`(替换子字符串)等。这些函数...

    sjjg.rar_Tabú_字符串_字符串 转换

    输入两个字符串s1、s2,将字符串s1、s2中每个小写字母转换为大写字母,再将s2字符串连接到s1串的尾部。 字符串的比较。输入两个字符串s1、s2,比较字符串s1、s2的大小。 数制转换。编写一个将16进制数字串转换成10...

    work2_分割字符串_字符串处理_

    例如,`strcat()` 和 `strncat()` 可以用来连接两个或多个字符串,`strstr()` 可以查找子字符串在主字符串中的位置,`strchr()` 和 `strrchr()` 则分别用于查找字符在字符串中的首次出现和最后一次出现。 此外,...

    C语言训练程序_自定义字符串连接函数

    C语言自定义字符串连接函数 在计算机编程中,字符串连接是指将两个或多个字符串连接成一个新的字符串的过程。在C语言中,标准库函数 strcat() 可以实现字符串连接。然而,在实际编程中,我们有时需要根据具体情况...

    vb_string_ok.rar_VB 字符串_pudn vb string_字符串

    10. **Concatenate** 运算符("&"):用于将两个或多个字符串连接在一起。例如,`"Hello " & "World"` 返回 "Hello World"。 这些函数和运算符在处理字符串时非常实用,能够满足多种需求,如搜索、替换、截取、拼接...

    HexStrToInt.zip_字符串处理_字符串的处理

    例如,在Python中,可以使用`+`符号连接两个字符串,`str[index]`获取指定位置的字符,`str[start:end]`截取子串,`str.find(substring)`查找子串位置,`str.replace(old, new)`替换子串,`str.split(delimiter)`按...

    PSSEQ_Kunix Transfer to hex_Labview字符串hex_字符串_

    LabVIEW提供了丰富的字符串处理函数库,如“字符串分割”、“字符串连接”和“查找和替换”等,可以帮助在字符串到16进制的转换过程中进行必要的操作。例如,“字符串到数组”函数可以将字符串分解成字符数组,然后...

    VB字符串处理函数_字符串处理函数_VB_

    13. **Join()** 函数:将数组元素合并成一个字符串,中间用指定的分隔符连接。 14. **Format()** 函数:格式化数值字符串,如添加千位分隔符、货币符号等。 15. **LCase()** 和 **UCase()** 函数:将字符串中的...

    abc.zip_ABC_字符串累加

    在描述中提到的“通过传递字符串就可以向上累加”,我们可以理解为这个库提供了一个API接口,允许开发者传入一个或多个字符串,然后返回这些字符串连接后的结果。这种累加可能不仅仅是简单的连接,也可能包括特定的...

    OJ_字符串加解密

    4. **字符串处理函数**:C语言中的`strlen()`用于获取字符串长度,`strcpy()`和`strncpy()`用于复制字符串,`strcat()`和`strncat()`用于连接字符串,`strchr()`和`strstr()`用于查找子字符串,这些函数可以辅助我们...

    C语言 不使用strcat函数实现连接两个字符串功能代码

    字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串,在字符串处理函数中,strcat 函数具有字符串连接功能。下面是用C语言实现不使用是strcat 函数实现连接两个字符串的功能。 源代码:...

    work2_分割字符串_字符串处理_源码.zip

    例如,Python 的 `join()` 可以将一个字符列表连接成字符串,`replace()` 用于替换字符串中的特定子串。 6. **源码分析**:压缩包内的源码可能包含各种字符串处理的示例,比如如何根据特定条件分割字符串,如何处理...

    实例76_字符串相关_自动填充.rar_实例字符串

    在实际应用中,字符串自动填充还常常结合其他字符串操作,如查找替换、截取、连接等,来实现更复杂的文本处理需求。例如,在数据库操作中,自动填充常用于确保字段值满足规定的长度要求;在网络编程中,URL编码也...

    c++字符串简单加密.zip_C 字符串 加密_C 简单加密_C++_DEMO_字符串加密

    它提供了丰富的成员函数,如`length()`(获取字符串长度),`append()`(连接字符串),`find()`(查找子串)以及`replace()`(替换子串)等,使得处理字符串变得简单且高效。 字符串加密通常涉及到对字符序列进行...

    QhStrAdd_字符串_源码.zip

    3. **字符串连接**:源码可能包含不同的字符串连接方法,比如通过循环逐个字符复制,或者一次性分配足够的内存来存储两个字符串的连接结果。 4. **性能优化**:通过预估所需内存,避免不必要的内存重分配,从而提升...

    字符串插入块链实现.zip_块链 串_字符串_链块插入_链表

    4. 插入函数:当需要插入新的字符串时,找到合适的插入位置,创建新的节点,然后更新指针以连接新旧节点。 5. 可能还包括遍历和打印链表的功能,以便于观察和验证程序的正确性。 总的来说,这个程序展示了如何使用...

    pointer_字符串_指针_

    在处理文件时,如果文件内容较大或不确定,我们可以将每行内容视为一个节点,通过指针连接这些节点,形成一个字符串链表。这样,我们可以方便地添加、删除或查找文件中的特定行。 在文件读取过程中,我们可以打开...

    5_4.zip_字符串

    3. 字符串拼接:连接两个或更多字符串,如Python的`+`运算符,或Java的`String.concat()`。 4. 子串提取:通过切片或子字符串方法获取字符串的一部分。 5. 字符串查找:查找子串在主字符串中的位置,如Python的`find...

    SQL_Server_连接字符串和身份验证.pdf

    ### SQL Server 连接字符串与身份验证详解 #### 一、引言 在数据库开发过程中,正确设置数据库连接字符串及选择合适的身份验证方式至关重要。本文将深入探讨 SQL Server 的连接字符串编写方法及其身份验证机制,...

Global site tag (gtag.js) - Google Analytics