当前位置: 首页 > news >正文

Java中StringBulider详解

StringBuilder 是 Java 中一个用来创建可变字符串的类。与 String 类不同,StringBuilder 对象能够被修改,不会创建新的对象,因此在需要进行大量字符串操作时,StringBuilder 更高效。以下是 StringBuilder 的详细讲解。

创建 StringBuilder 对象

可以通过以下几种方式创建 StringBuilder 对象:

  1. 使用默认构造函数:

    StringBuilder sb = new StringBuilder();
    

    这种方式创建的 StringBuilder 初始容量为 16 个字符。

  2. 指定初始容量:

    StringBuilder sb = new StringBuilder(50);
    

    这种方式创建的 StringBuilder 初始容量为 50 个字符。

  3. 通过给定字符串初始化:

    StringBuilder sb = new StringBuilder("Hello");
    

    这种方式创建的 StringBuilder 初始容量为字符串长度加 16。

常用方法

StringBuilder 提供了许多方法来操作字符串,这里列出一些常用的方法,需要注意的是,索引是从零开始的,如果方法中用到索引作为了参数,包含开头,不包含结束

  1. append:追加字符串到末尾

    sb.append(" World");
    // "Hello World"
    
  2. insert:在指定位置插入字符串

    sb.insert(5, " Beautiful");
    //  "Hello Beautiful World"
    
  3. delete:删除从指定开始位置到结束位置之间的字符

    sb.delete(5, 15);
    //  "Hello World"
    
  4. replace:替换从指定开始位置到结束位置之间的字符

    sb.replace(6, 11, "Java");
    // "Hello Java"
    
  5. reverse:将字符串反转

    sb.reverse();
    //  "avaJ olleH"
    
  6. toString:将 StringBuilder 转换为 String

    String result = sb.toString();
    // "avaJ olleH"
    
  7. setLength:设置字符串长度

    sb.setLength(5);
    //  "avaJ "
    
  8. charAt:获取指定位置的字符

    char ch = sb.charAt(2);
    // ch is 'a'
    
  9. setCharAt:设置指定位置的字符

    sb.setCharAt(0, 'A');
    //  "AvaJ "
    
  10. capacity:返回当前容量

    int capacity = sb.capacity();
    // 21 ( 16 + "Hello" length 5)
    
  11. length:返回当前长度

    int length = sb.length();
    // length is 5
    

性能优势

StringBuilder 由于其可变性,在进行多次字符串拼接、插入、删除操作时,不会像 String 一样频繁创建新的对象,节省了内存开销和提高了性能。因此在涉及大量字符串操作时,推荐使用 StringBuilder

线程安全性

需要注意的是,StringBuilder 不是线程安全的。如果需要在多线程环境中使用可变字符串,可以使用 StringBuffer 类,它的所有方法都是同步的(synchronized),但这也意味着其性能略低于 StringBuilder

示例代码

以下是一个简单的示例,展示如何使用 StringBuilder 类:

public class Main {public static void main(String[] args) {StringBuilder sb = new StringBuilder("Hello");sb.append(" World");sb.insert(5, " Beautiful");sb.replace(6, 15, "Java");sb.reverse();System.out.println(sb.toString());  // 输出 "avaJ olleH"}
}

总结

StringBuilder 是 Java 中非常有用的类,用于构建和修改字符串。当需要频繁地对字符串进行操作时,使用 StringBuilder 能够提高性能,减少内存消耗。

相关文章:

Java中StringBulider详解

StringBuilder 是 Java 中一个用来创建可变字符串的类。与 String 类不同,StringBuilder 对象能够被修改,不会创建新的对象,因此在需要进行大量字符串操作时,StringBuilder 更高效。以下是 StringBuilder 的详细讲解。 创建 Stri…...

基于springboot高校就业招聘系统的设计

管理员账户功能包括:系统首页,个人中心,就业咨询管理,毕业去向管理,简历管理,管理员管理,基础数据管理 辅导员账户功能包括:系统首页,个人中心,就业咨询管理…...

嵌入式C语言编码规范要点

1.函数命名方法 骆驼命名法(Camel) 帕斯卡命名法((pascal),也叫大驼峰命名法(Upper Camel Case) 匈牙利命名法 下划线命名法(也称为蛇形命名法) 详述见之前文…...

Python中的全局解释器锁:深入解析与应对策略

1. 引言 在Python的世界里,全局解释器锁(GIL)是一个经常被讨论的话题。它既是Python并发编程中的一个重要概念,也是许多开发者感到困惑的源头。本文将深入探讨GIL的工作原理、它对Python程序性能的影响 2. 全局解释器锁的历史背…...

【java计算机毕设】图书商城管理系统MySQL springboot vue html maven送文档

1项目功能介绍 【java计算机毕设】图书商城管理系统 Java Spring Boot vue HTML MySQL 赠送文档 PPT 2项目简介 系统功能: 图书商城管理系统包括管理员和用户两种角色。 管理员的功能包括在个人中心修改个人信息,以及在基础数据管理中管理会员等级类型和…...

【Java刷题】二叉树

相同的树 public boolean isSameTree(TreeNode p, TreeNode q) {if(p null && q null) {return true;} else if(p ! null && q ! null) {if(p.val ! q.val) {return false;} else {return isSameTree(p.left, q.left) && isSameTree(p.right, q.rig…...

【Linux】程序地址空间之动态库的加载

我们先进行一个整体轮廓的了解,随后在深入理解细节。 在动态库加载之前还要说一下程序的加载,因为理解了程序的加载对动态库会有更深的理解。 轮廓: 首先,不管是程序还是动态库刚开始都是在磁盘中的,想要执行对应的可…...

LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?

在LabVIEW处理中,确保大量数据的准确性和完整性至关重要。以下是详细的多角度分析和建议,以确保在LabVIEW中处理大量数据时,数据的准确性和完整性: 1. 数据采集阶段 1.1 高精度硬件选择 选择高精度的数据采集硬件,如…...

容器是什么?

概念 容器可以被看作是一种轻量级的虚拟化技术。与传统虚拟化技术相比,容器不需要为每个应用程序提供单独的操作系统,它们共享宿主机的操作系统内核。这使得容器更加轻便和高效。 想象一下,容器就像是一艘艘可以在海洋中独立航行的货轮&…...

#15 从Stable Diffusion生成的艺术中寻找灵感

文章目录 前言1. Stable Diffusion简介2. 寻找灵感的途径2.1 深入探索主题2.2 结合多种艺术风格2.3 实验不同的创意组合 3. 灵感应用3.1 艺术创作3.2 设计项目3.3 故事讲述 4. 实践建议4.1 记录和迭代4.2 开放实验4.3 结合个人风格 结论 前言 在当今的数字时代,人工…...

git rebase

1. git rebase的意义 首先理解这个rebase,它的意思是re base,翻译过来就是“重新基于”。 意义是:重新整理当前分支的开发线,使其变成基于某个开发节点的开发线。 2. rebase用于并行开发 构造两个分支master和feature&#xf…...

Docker引起的漏洞问题

前言 测试环境上的中间件和java应用都是由docker进行部署的,但是因为docker的镜像访问有时候需要外网,由此引发了问题,在docker文件中 /usr/lib/systemd/system/docker.service 原有的配置为,可以看到进行了加密 ExecStart/usr/bin/dockerd --tlsverify --tlscacert/etc/docker…...

Oracle基本数据类型

在Oracle数据库中,数据类型是描述数据存储格式的属性。不同的数据类型允许存储不同种类的数据。以下是Oracle中的一些基本数据类型: 1. 字符数据类型 - CHAR(size): 定长字符数据,最大长度为2000字节。 - VARCHAR2(size): 变长字符数据…...

VS+QT+OCC创建坐标界面

1、安装并配置好项目后&#xff0c;填写如下代码&#xff1a; #pragma once#include <Standard_Handle.hxx> #include <V3d_Viewer.hxx> #include <OpenGl_GraphicDriver.hxx> #include <WNT_Window.hxx> #include <V3d_View.hxx> #include <…...

VUE2.7项目配置webpack打包-详细操作步骤

一、Webpack简介 Webpack是一个打包工具&#xff0c;可以把JS、CSS、Node Module、Coffeescrip、SCSS/LESS、图片等都打包在一起&#xff0c;因此&#xff0c;现在几乎所有的SPA项目、JS项目都会用到Webpack。 官网&#xff1a;https://webpack.js.org GitHub为https://git…...

Linux系统Docker部署Apache Superset并实现远程访问详细流程

目录 前言 1. 使用Docker部署Apache Superset 1.1 第一步安装docker 、docker compose 1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问 3. 设置固定连接公网地址 前言 作者简介&#xff1a; 懒大王敲代码&#xff0…...

Cochrane Library循证医学数据库的介绍及文献下载

今天要讲的数据库是Cochrane Library循证医学数据库&#xff0c;我们先来了解一下该数据库&#xff1a; Cochrane Library是国际Cochrane Collaboration的主要产品&#xff0c;由英国Wiley InterScience公司出版发行。是一个提供高质量证据的数据库&#xff0c;是循证医学的证…...

冯喜运:6.12今日黄金原油行情还会涨吗?黄金原油独家操作策略

【黄金消息面分析】&#xff1a;据荷兰国际集团(ING)大宗商品策略师埃瓦?曼西(Ewa Manthey)称&#xff0c;黄金价格正面临来自美元走强和中国需求疲软的新阻力&#xff0c;但一旦美联储开始降息&#xff0c;黄金价格将恢复反弹。      【黄金技术面分析】&#xff1a;黄金…...

VM ubuntu终端使用Host代理的方法

1、设置网络地址转换NAT 2、在终端敲击如下命令 先敲击 ip route show 找到网关。再敲击如下命令&#xff1a; export http_proxyhttp://10.0.2.2:33210 export https_proxyhttp://10.0.2.2:33210 export HTTP_PROXYhttp://10.0.2.2:33210/ export HTTPS_PROXYhttp://10.0.2.…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 破译犯罪时间(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 破译犯罪时间(100分) 🌍 评测功能需要订阅专栏后私信联系清…...

零基础入门:时空预测的系统化学习笔记

零基础入门&#xff1a;时空预测的系统化学习笔记 很多刚接触时序与时空预测领域的朋友&#xff0c;常常会陷入两个极端&#xff1a;要么一上来就硬啃复杂的 SOTA 模型&#xff0c;连基础算子都没搞懂就想复现顶会成果&#xff0c;最后处处碰壁&#xff1b;要么只停留在基础概…...

自学C#的第三天

今天自学了c#&#xff0c;并看了相关的unity课程视频&#xff0c;加油&#xff0c;争取找到一份好的实习&#xff0c;简历投递效果不是很成功&#xff0c;打算给我的qt项目重新完善一下...

AI Agent与传统RPA工具区别:深度解析企业智能自动化的代际跃迁

在人工智能技术从大语言模型的“对话式交互”向“行动式智能体”跨越的关键周期内&#xff0c;AI Agent&#xff08;智能体&#xff09;与传统 RPA&#xff08;机器人流程自动化&#xff09;工具的区别已成为企业数字化转型的核心议题。这一区别不仅体现在技术架构的演进上&…...

从‘生日悖论’到‘碰撞攻击’:一个故事讲明白哈希函数为什么会被攻破

从生日派对到数字指纹&#xff1a;哈希函数的安全冒险之旅 想象一下&#xff0c;你正在参加一个23人的小型生日派对。服务员突然打赌说&#xff1a;"这里至少有两个人同一天生日。"你环顾四周觉得概率渺茫——毕竟一年有365天呢。但惊人的是&#xff0c;这个赌注的胜…...

OpenClaw技能市场巡礼:Qwen3-32B生态的十大实用工具

OpenClaw技能市场巡礼&#xff1a;Qwen3-32B生态的十大实用工具 1. 为什么需要关注OpenClaw技能市场&#xff1f; 第一次接触OpenClaw时&#xff0c;我被它"让AI直接操作电脑"的理念震撼了。但真正让我决定长期使用的&#xff0c;却是它背后那个不断壮大的技能市场…...

从‘它好慢’到‘真香’:Vite + Vue 3项目实战中那些让你开发效率翻倍的配置技巧

从‘它好慢’到‘真香’&#xff1a;Vite Vue 3项目实战中那些让你开发效率翻倍的配置技巧 如果你正在使用Vite和Vue 3进行开发&#xff0c;却总觉得构建速度不够快、开发体验不够流畅&#xff0c;或者在某些特定功能配置上卡壳&#xff0c;那么这篇文章就是为你准备的。我们将…...

w3x2lni:魔兽地图跨版本转换的技术突破与实践指南

w3x2lni&#xff1a;魔兽地图跨版本转换的技术突破与实践指南 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 问题引入&#xff1a;版本壁垒下的魔兽地图开发困境 在魔兽争霸III的地图开发领域&#xff0c;版本迭…...

线上年销 10 亿的背后:实体转型的 “线上 + 线下” 实战逻辑复盘

在行业的讨论声中&#xff0c;总有声音将某些日化品牌的崛起归类为 “资本运作” 或 “流量套路”。但实际上&#xff0c;深耕日化赛道近 20 年的顶俏&#xff0c;凭借 10 亿级的年销售额&#xff0c;为无数身处转型期的实体商家&#xff0c;提供了一份极具含金量的实战答卷。从…...

pdf2htmlEX代码质量工具集成:将质量检查融入开发的完整指南

pdf2htmlEX代码质量工具集成&#xff1a;将质量检查融入开发的完整指南 【免费下载链接】pdf2htmlEX Convert PDF to HTML without losing text or format. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2htmlEX pdf2htmlEX作为一款强大的PDF转HTML工具&#xff0c;…...

罗斯蒙特RoseMount手操器TREXLFPKL9S1

罗斯蒙特475手操器是一款由艾默生&#xff08;Emerson&#xff09;推出的高性能现场通讯设备&#xff0c;广泛应用于工业自动化领域&#xff0c;用于配置、校准和诊断HART及Foundation Fieldbus协议的智能仪表设备。它具备彩色图形界面、蓝牙通信、强大的现场诊断功能和可用户升…...