String,StringBuilder 和 StringBuffer 的区别

简介: String不可变,StringBuilder与StringBuffer可变;后者线程不安全,StringBuffer线程安全。大量拼接时优先选用后两者,多线程用StringBuffer,单线程用StringBuilder。String因final设计保证不可变,利于安全与缓存。
  • 它们都可以用来表示字符串对象
  • String 表示的字符串是不可变的,而后两者表示的字符串是内容可变的(可以增、删、改字符串里的内容)
  • StringBuilder 不是线程安全的,StringBuffer 是线程安全的,而 String 也算是线程安全的

适用场景

  • 大部分场景下使用 String 就足够了
  • 如果有大量字符串拼接的需求,建议用后两者,此时
  • 此字符串对象需要被多线程同时访问,用 StringBuffer 保证安全
  • 此字符串对象只在线程内被使用,用 StringBuilder 足够了

另外针对 String 类是 final 修饰会提一些问题,把握下面几点

  • 本质是因为 String 要设计成不可变的,final 只是条件之一
  • 不可变的好处有很多:线程安全、可以缓存等
相关文章
|
6月前
|
前端开发 Java Nacos
application.yml和bootstrap.yml这两个配置文件有什么区别?
`bootstrap.yml` 与 `application.yml` 是 Spring Boot/Cloud 项目中的两类配置文件。前者用于应用启动前加载,主要配置远程配置中心(如 Nacos)、加密等关键信息,优先级高;后者是默认主配置,用于常规配置如端口、数据库等。自 Spring Boot 2.4+ 起,默认不再启用 `bootstrap` 机制,推荐使用 `spring.config.import` 在 `application.yml` 中统一导入配置,以简化流程、降低复杂度。纯 Spring Boot 应用不加载 `bootstrap.yml`。
1015 0
|
存储 缓存 安全
面试题-HashMap底层原理与HashTable的区别
字节跳动面试题-HashMap底层原理与HashTable的区别
551 0
|
Java Spring
springboot的自动配置原理
springboot的自动配置原理
|
XML 缓存 前端开发
Android 架构之 MVI 初级体 | Flow 替换 LiveData 重构数据链路(下)
Android 架构之 MVI 初级体 | Flow 替换 LiveData 重构数据链路
1086 0
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
6月前
|
数据采集 人工智能 算法
[技术深度] 2026 AI智能体运营工程师课程大纲拆解的RAG技术路线图
随着大模型(LLM)从“玩具”走向“工具”,企业级应用的核心痛点已从“如何调用 API”转移到了“如何管理私有知识”。RAG (Retrieval-Augmented Generation,检索增强生成) 技术因此成为了 2026 年技术圈的绝对顶流。 然而,市面上绝大多数教程仅停留在“LangChain Demo”层面,无法解决工业场景下数据脏乱、检索精度低、响应延迟高等实际问题。 本文将深度拆解智能体来了(西南总部)的【AI智能体运营工程师就业班】核心技术模块。我们将跟随技术导师金加德讲师的视角,复盘一套经过实战验证的 RAG 技术路线图,从数据 ETL 到混合检索(Hybrid Sear
|
7月前
|
消息中间件 Java Spring
MQ收发消息
本文介绍如何使用SpringAMQP实现RabbitMQ消息收发。RabbitMQ基于AMQP协议,支持跨语言通信。通过SpringBoot整合SpringAMQP,可快速实现消息发送与接收。文中演示了创建队列、配置生产者与消费者、使用RabbitTemplate发送消息及@RabbitListener监听消息的完整流程,并简要对比了推模式与拉模式的应用场景。
MQ收发消息
|
SQL 存储 Oracle
大厂面试高频:聊下分库分表与读写分离的实现原理
本文详解了分库分表和读写分离的原理与实现,帮助解决大数据量下的性能瓶颈问题,大厂面试高频,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:聊下分库分表与读写分离的实现原理
|
消息中间件
【RabbitMQ七】——RabbitMQ发布确认模式(Publisher Confirms)
【RabbitMQ七】——RabbitMQ发布确认模式(Publisher Confirms)
1181 0