[每天一个知识点]15-Java语言-字符串连接

昨天说了字符串拼接,今天来说说连接,我指的是非数组或集合类型的一堆内容拼一个字符串出来。

最简单的是用+运算符,然后还有StringBuilder和StringBuffer。如果是培训学校教的,一般都是说首选使用StringBuilder其次是StringBuffer,不要用+效率很低。实际上在大部分情况下使用+已经足够了,因为+实际上编译之后就是StringBuilder(没有StringBuilder的版本是StringBuffer),而且如果是2个字符串常量相加还能在编译器合并成一个。

一种考虑手工创建StringBuilder的场景是在循环次数很多的循环中使用字符串连接,类似于这样:

<pre name="code" class="java">

String result = "";

for (int i = 0; i < 1_000_000; ++i) {
    result += xxx;
} 

在这种场景下,第4行代码在for循环每次循环执行时都会创建一个新的StringBuilder,在循环次数比较多的时候会有显著的效率降低(比如在我的电脑上循环5000次执行时间就有数量级的差距)。这个效率的降低主要来源于+=而非创建StringBuilder对象,所以对于这样:

for (int i = 0; i < 1_000_000; ++i) {
    String result = xxx + yyy + zzz;
}

则没有必要手工创建StringBuilder。但是当循环次数更加巨大,以至于需要考虑创建对象成本的时候就得考虑在循环外手工创建一个在循环内复用了。不过这种场景对新人来说应该是没有机会遇到的,不用关心也可。

时间: 2024-10-12 21:48:25

[每天一个知识点]15-Java语言-字符串连接的相关文章

[Java SE] 字符串连接

Java 支持多种字符串连接方式,总结如下: package cn.spads.tool.string; import java.text.MessageFormat; /** * <b>测试字符串连接</b><br> * @author Surmounting * @version V1.1.0 * history * 1.1.0, 2015年9月1日 Surmounting 初版 * @since Java 6.0 */ public class TestStrin

JAVA语言——字符串排序

题目描述 先输入你要输入的字符串的个数.然后换行输入该组字符串.每个字符串以回车结束,每个字符串少于一百个字符. 如果在输入过程中输入的一个字符串为"stop",也结束输入. 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串. 输入描述: 字符串的个数,以及该组字符串.每个字符串以'\n'结束.如果输入字符串为"stop",也结束输入. 输出描述: 可能有多组测试数据,对于每组数据, 将输入的所有字符串按长度由小到大排序输出(如果有&q

C 语言字符串连接的 3种方式

#include<stdio.h> #include<stdlib.h> #include<string.h> char *join1(char *, char*); void join2(char *, char *); char *join3(char *, char*); int main(void) { char a[4] = "abc"; // char *a = "abc" char b[4] = "def&

15 Java语言基础数据类型转换之强制转换

public class Add{ public static void main(String[] args) { int x = 3; byte y = 4; y = (byte)(x + y); System.out.println(y); } } 大类型赋值给小类型,需要使用强制类型转换,强制类型转换可能会损失精度 强制类型转换的格式 小类型 小类型标识符 = (大类型) 大类型数值

025、Java中字符串连接与加法操作一起出现

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int numA = 100; // int型变量 double numB = 99.0; // int型变量 String str = "加法计算:" + numA + numB; // String型变量 Syste

正则表达式(以Java语言为例)

正则表达式的概念: 用来匹配和处理文本的字符串.人们常用模式(pattern)来表示实际的正则表达式.正则表达式是由正则表达式语言创建的.正则表达式语言是内置于其他语言或软件产品里的"迷你"语言,但它并不是一种完备的程序设计语言.不同的编程语言或应用程序里,正则表达式的语法和功能会有所不同. 正则表达式的用途: (1)搜索(匹配):在一个字符串中搜索出一个或多个与正则表达式相匹配的子字符串.搜索又分为匹配和子字符串搜索.匹配是对用户所提供的整个字符串进行判断,看其是否匹配正则表达式,比

java语言具备的11大特点

中软国际武汉java培训专家介绍java语言具备的11大特点. 1.Java语言是简单的 Java 语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java.另一方面,Java丢弃了C++中很少使用的.很难理解的.令人迷惑 的那些特性,如操作符重载.多继承.自动的强制类型转换.特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧. 2.Java语言是一个面向对象的 Java 语言提供类.接口和继承等原语,为了简单起见,只支持类之间的单继承,

Java语言的特点

Java语言的流行除了因为它能够编制嵌入HTML文件中的Applet外,还在于Java语言本身的面向对象.简单.平台无关性.安全性.多线程等特点java语言的结构与编写方式,与c++语言类似,因此学习Java语言,不仅要了解Java语言特点,同时还要有程序设计基础和面向对象的概念.java语言的特点如下: java语言的特点一:简单.高效 Java语言与C++类似,如果用户了解C++和面向对象的概念,就可以很快编写出Java程序:此外,Java又不同于诸如C++语言提供的各种各样的方法,它只提供

Java语言特性详解

Java语言是一个支持网络计算的面向对象程序设计语言.Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性, 如支持并发程序设计.网络通信.和多媒体数据控制等.主要特性如下:        1) Java语言是简单的  Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java.另一方面,Java丢弃了C++ 中很少使用的.很难理解的.令人迷惑的那些特性, 如操作符重载.多继承.自动的强制类型转换.特别地,Java语言不使用指针,并提供了自动的