目录

  • 写在前面
  • 常规的字符串拼接方法

写在前面

这是一篇非常基础的文章,将会演示如何使用Java正确高效的拼接字符串。
这些问题也是我们应该注意的基础的性能优化技巧。

常规的字符串拼接方法

  • 使用’+‘操作符连接字符串

平时我们在开发中一般都是直接的这样去拼接字符串。

String newString = "Hello " + "World"; // Hello World

+’这个操作符代表将两个字符变量的内容相加,也就是连接在一起。但是这个操作是很低效的,上面的例子中只有两个字符串的时候还不会感觉到什么性能问题。但是如果是连接数十个甚至更多个字符串的时候,你就知道了为什么说这个操作符会影响性能。Effecti Java(第二版)中第51条中明确的说过,为连接n个字符串而重复的使用字符串连接操作符,需要n的平方级的时间。原因是因为Java中的String类型也就是字符串设计为不可变的类型,并不支持动态扩展,所以n个字符串被连接在一起的时候,它们的内容都要被拷贝,所以需要n的平方级的时间。

  • 使用StringBuilder连接字符串

为了解决上述的平方级的时间问题,我们可以使用Java提供的StringBuilder来拼接字符串,本文不讨论多线程问题,所以不会去比较StringBuilder和StringBuffer的区别,其实简单的说,StringBuffer设计为线程安全的,适合多线程的使用,更多的相关知识可以参考其他文章。当然,字符串的数量不多的时候,可以直接使用’+‘拼接,但是注意,就算拼接3个字符串需要9次复制操作了,所以推荐2个以上可以考虑StringBuilder了。StringBuilder的操作需要的时间是线性增加的,因为调用StringBuilder.append方法不会去拷贝所有的字符串。

Java中如何高效的拼接字符串相关推荐

  1. 为什么Java 8中不再需要StringBuilder拼接字符串

    在Java开发者中,字符串的拼接占用资源高往往是热议的话题. 让我们深入讨论一下为什么会占用高资源. 在Java中,字符串对象是不可变的,意思是它一旦创建,你就无法再改变它.所以在我们拼接字符串的时候 ...

  2. java8 stringbuilder_为什么 Java 8 中不再需要 StringBuilder 拼接字符串

    在Java开发者中,字符串的拼接占用资源高往往是热议的话题. 让我们深入讨论一下为什么会占用高资源. 在Java中,字符串对象是不可变的,意思是它一旦创建,你就无法再改变它.所以在我们拼接字符串的时候 ...

  3. java8 stringbuilder_为什么 Java 8 中不需要 StringBuilder 拼接字符串

    在Java开发者中,字符串的拼接占用资源高往往是热议的话题. 让我们深入讨论一下为什么会占用高资源. 在Java中,字符串对象是不可变的,意思是它一旦创建,你就无法再改变它.所以在我们拼接字符串的时候 ...

  4. java中拼接和 的区别_浅析Java中String与StringBuffer拼接的区别

    学习笔记: 1.String拼接会创建一个新的String对象,存储拼接后的字符串: StringBuffer拼接是直接在本身拼接,会即时刷新. 2.String只能拼接String类型的字符串: S ...

  5. Java中SQL语句的拼接规则

    拼接规则示例 java中的字符串只能双引号,如果字符串中需要拼接变量,该变量用单引号括起来,然后加两个双引号再加两个加号,中间就是变量. 例如:查询数据库中的用户名和密码. 注:为和sql表中的use ...

  6. 在java中构建高效的结果缓存

    文章目录 使用HashMap 使用ConcurrentHashMap FutureTask 在java中构建高效的结果缓存 缓存是现代应用服务器中非常常用的组件.除了第三方缓存以外,我们通常也需要在j ...

  7. 在Java中,如何使一个字符串的首字母变为大写

    问题:在Java中,如何使一个字符串的首字母变为大写 我使用Java去获取用户的字符串输入.我尝试使他们输入的第一个字符大写 我尝试这样: String name;BufferedReader br ...

  8. 在Java中使用标准输入输出设备进行字符串,整数浮点数等 的输入输出操作

    在Java中使用标准输入输出设备进行字符串.整数浮点数等的输入输出操作 在Java语言中进行标准输入输出(键盘显示器)需要通过创建输入输出流对象的方式进行,一般情况下我们可以使用 BufferedRe ...

  9. Java中如何使用“点”分割字符串呢?

    下文笔者讲述Java代码中使用点分割字符串的方法分享,如下所示: 实现思路: 使用 字符串对象.split("\\.") 使用点分割字符串的示例分享 package com.jav ...

最新文章

  1. chkdsk 检查卷位图时发现损坏_如何修复Windows 10引导记录损坏故障
  2. 沙洋有几个微服务群_集群 分布式 微服务
  3. Git 下载、安装与SSH配置
  4. Zdenek Kalal的TLD Tracker(牛啊,学习!)
  5. hadoop fs –ls /hbase 无内容_Hadoop大数据实战系列文章之HDFS文件系统
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生信息管理系统
  7. Linux:(ubuntu)命令行下显示方框的问题
  8. CCF201812-2 小明放学(100分)【序列处理】
  9. 书单丨把握Java技术发展的新趋势!
  10. SSh框架的整合流程
  11. vos3000下载java_VOS3000 安装
  12. 得物(毒)app测试开发工程师面经
  13. 计算机考研院校难度排行榜
  14. Android框架排行榜,上百项资源汇总不容错过
  15. 多线程-Callable接口
  16. 《富爸爸,穷爸爸》书摘二
  17. 跨国面板数据(1960-2020)七:银行、外汇、货币、利率、通货膨胀、债务(excel、stata版)
  18. 轻巧易用,音质更进一步,南卡Lite pro 2真无线耳机上手
  19. 1140 单位矩阵初始化
  20. PS磨皮插件免费电脑版Portraiture4.03下载及使用教程

热门文章

  1. 站长探讨说说之网络公司通知你软文外链该怎样去发布
  2. python头像动漫化_Python头像动漫化,快来生成一个自己的动漫头像吧
  3. 2022年-中国科学技术大学研究生期末考试(复习资料最新更新)
  4. 阿里云服务器的镜像如何选择
  5. android 播放器
  6. 滴滴十大技术方向开源项目出炉!
  7. 【jenkins打包maven项目报错记录】
  8. 2020/04/28 07-kazoo库使用和watcher
  9. ssm毕设项目校园快递代取系统20f19(java+VUE+Mybatis+Maven+Mysql+sprnig)
  10. 如何免费下载音频素材