Java源码___StringBuffer类(一)

Java零基础-StringBuffer 类详解! 在上一期的文章中,我们深入探讨了类的特点和用法。提供了一个高效且线程不安全的字符串操作方式,适用于单线程环境中对字符串频繁修改的场景。然而,在实际开发中,许多情况下需要在多线程环境下操作字符串,这就要求我们使用一种线程安全的替代方案——。是 Java 中一种线程安全的可变字符串类,其在设计上保证了对字符串的所有操作都是线程安全的。通过加锁机制,确保了多个线程在同时修改字符串时的正确性,适合在并发环境中使用。在本期内容中,我们将详细解析类的实现原理及其在多线程环境中的应用场景。通过对比和。 阅读详情

 java.lang.StringBuffer类分析摘要:
<1>简介
<2>常量和变量
<3>构造器方法
<4>length()方法
<5>capacity()方法
<6>ensureCapacity(int minmumCapacity)

1.简介

 类介绍:
 StringBuffer类,它是一个具有字符缓冲区的类。它是一个易变的字符序列。实现可修改字符串,在任何时间点,他包含一些特定的字符序列,但是序列的长度和字符可以通过特殊的方法去修改。且如果往构造方法中丢入实参null的话,会抛出NullPointerException异常。

public final class StringBuffer extends AbstractStringBuilder i
                                mplements java.io.Serializable,CharSequence{

继承关系:继承关系
这个类的属性有:pulic公有的、final不可修改的。
 
继承AbstractStringBuilder类,提供了修改缓存区容量和字符的方法。
 
实现Serializable接口:实现序列化接口。
 
实现CharSequence接口:该接口中有包含一些操作char字符的方法。

 
 
2.常量和变量介绍
 这是该字符缓冲类中的变量介绍。

//transient:用transient关键字标记的成员变量不参与序列化过程
private transient char[] toStringCache;

static final long serialVersionUID = 3388685877147921107L;

 

3.构造器方法
 这是StringBuffer类的构造方法。

//无参构造方法,默认是缓存容量大小为16
public StringBuffer(){
    super(16);
}

//创建指定容量的StringBuffer类
public StringBuffer(int capacity){
    super(capacity);
}

//创建一个容量为str长度+16长度的字符缓存类。其缓存字符存放的是str的字符
pulic StringBuffer(String str){
    super(str.length()+16);
    append(str);
}

public StringBuffer(CharSequence seq){
    this(seq.length()+16);
    append(seq);
}

这个方法是的属性有:public公有的。
参数:capacity int类型,指定StringBuffer的容量大小
异常:NullPointerException
异常说明:如果capacity传值为null,则会抛出此异常。

 
 
4.length()方法

 该方法获取字符缓存区中字符的长度,方法与AbstractStringBuilder中的一样,就是多了一个同步而已。

//【重写AbstractStringBuilder中的length方法】
@Override
public synchronized int length(){
    return count;
}

这个方法是的属性有:public公有、synchronized同步。
 
返回值:int类型
返回值说明:返回一个count,而count是记录该对象缓存字符的字符数。

 

5. capacity()方法

 该方法会返回StingBuffer类的缓存区容量大小,方法与AbstractStringBuilder中的一样,就是多了一个同步而已。

//【重写自AbstractStringBuilder】
public synchronized int capacity(){
    return value.length;
}

这个方法是的属性有:public公有、synchronized同步。
返回值:int 类型
返回值说明:返回该类的字符容量大小。

 

6. ensureCapacity(int minimumCapacity)
 该方法是个会保证类的容量大小的方法,方法与AbstractStringBuilder中的一样,就是多了一个同步而已。

//【重写自AbstractStringBuilder类】
public synchronized void ensureCapacity(int minmumCapacity){
    super.ensureCapacity(minmumCapacity);
}

这个方法是的属性有:public公有、synchronized同步的。
参数:minmumCapacity 最小容量
参数说明:int类型,最小容量数值。用于和该类的容量做比较。
方法说明:如果该类的容量大于minmumCapacity,则返回该对象。如果小于minmumCapacity,则创建一个新的容量。

 方法注意:
<1>如果该类的容量大于minmumCapacity,则返回该对象。如果小于minmumCapacity,则创建一个新的容量。
<2>新建的容量为原来的两倍+2。

VN1630A硬件配置指南:手把手教你用CanApe搭建XCP标定工程(附ELF文件配置技巧) 本文详细介绍了如何使用VN1630A硬件和CanApe软件搭建XCP标定工程,包括硬件配置、CanApe工程创建、ELF文件处理及XCP协议层配置等关键步骤。特别针对实际项目中常见的错误和细节问题提供解决方案,帮助工程师高效完成ECU参数标定工作。 阅读详情

相关推荐

从BAM到bigWig:用UCSC工具链完成测序数据可视化的完整流程

本文详细介绍了从BAM文件到bigWig格式的基因组数据可视化完整流程,涵盖UCSC工具链配置、文件格式转换、参数优化及常见问题解决方案。通过实战指南帮助研究人员高效完成测序数据可视化,特别适合ChIP-seq和RNA-seq数据分析。

weixin_29309213的博客 707

【Sonar代码扫描常遇问题】

【Sonar代码扫描常遇问题】

m0_49762804的博客 2264

unity 在透明物体上投射阴影

unity版本:2019.4.16 创建一个shader,代码如下: Shader "ChuckLee/ARShadow" { Properties { _ShadowColor("Shadow Color", Color) = (0.1, 0.1, 0.1, 0.53) } SubShader { Tags{ "RenderType" = "Transparent" "Queue" = "Geometry+1" } Blend SrcAlpha OneMinusSrcAlph

Abel02的博客 2953

Java中的StringBuffer类

【代码】Java中的StringBuffer类。

SakuraMG的博客 2810

Informer:比Transformer更有效的长时间序列预测

目录 AAAI 2021最佳论文:比Transformer更有效的长时间序列预测 Background Why attention Methods:the details of Informer Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的

To be a better man 1万+

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 706

Java学习笔记——StringBuffer类

目录 一、StringBuffer 的特点 二、StringBuffer 的构造方法 三、StringBuffer 的常用方法 四、代码 Java中处理字符串常用的三个类分别为:String、StringBuffer、StringBuilder 本文将对 StringBuffer 类进行简单的介绍。 一、StringBuffer 的特点 StringBuffer 类的对象可被多次修改,且对 StringBuffer 对象本身操作; StringBuffer 类使用synchroniz.

D77的博客 993

uniapp - web-view嵌套H5网页白屏问题,<web-view>页面跳转出现白屏情况,强力解决uniapp嵌套webview页面时出现无法加载并白屏(无论本地还是线上H5网页链接都能解决)

uniapp微信小程序,uniapp APP端,uni-app web-view嵌套H5项目白屏问题分析及解决,uniapp嵌套webview页面时,出现白屏,uniapp <web-view>页面跳转出现白屏解决方法,uniapp <web-view>页面跳转出现白屏解决方法,解决uniapp的web-view打开网页在老手机上出现白屏的问题,uni-app web-view白屏处理,引入本地网页白屏,WebView 加载不出网页,一片空白webview白屏加载不出来,使用webview加载链接后白屏,u

🏆 前端领域优质创作者 1万+

sonar常见错误以及处理方案

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34032827的博客 2756

【用unity实现100个游戏之19】制作一个3D传送门游戏,实现类似鬼打墙,迷宫,镜子,任意门效果(附项目源码)

本文介绍了Unity中实现传送门效果的完整流程。通过第一人称角色控制器实现移动,使用PortalView脚本和自定义Unlit Shader渲染门内场景,巧妙利用相机位置和旋转同步实现动态视角。重点解决了近裁剪面问题,确保远距离渲染正确性。最后通过PortalTeleporter脚本实现传送功能,检测碰撞并计算相对位置进行瞬移。该方法无需复杂插件,代码简洁高效,适用于各类3D场景中的传送门实现。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

【图像超分】论文精读:SRConvNet: A Transformer-Style ConvNet for Lightweight Image Super-Resolution

本文提出了一种轻量级图像超分辨率重建方法SRConvNet,结合了卷积神经网络和Transformer的优势。针对传统Transformer计算复杂度高的问题,设计了傅立叶调制注意力(FMA)替代自注意力机制,通过区域频率空间调制实现高效的全局依赖建模;同时引入动态混合层(DML),采用混合尺度动态卷积结合通道拆分机制增强局部特征提取。实验表明,SRConvNet在计算效率和参数数量上显著优于现有轻量级超分方法,同时保持了优异的重建性能。该方法为移动端部署提供了有效的解决方案,在精度与复杂度间取得了良好平衡

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 808

StringBuffer源码

可变的字符序列,可以对字符串进行增删,不会产生新的对象;线程安全的,将所有方法重写并用synchronized关键字修饰,效率低;底层使用 byte[] 存储。当append和insert时,原value数组长度不够时,进行扩容。

我的博客 406

智能工厂评估模型研究

摘要:通过对国内外现有智能制造评估模型的研究,结合重庆制造业行业领跑者与落后者之间差距大的现状,以实现全要素全连接的数字化工厂为出发点,融合工业互联网标识,构建实践可行的智能工厂评估模型推动中小型企业参与智能制造转型,缓和两极分化问题。本评估模型包含工厂体系架构的3个层级,提供用于推动智能制造转型的参考,包括设计、生产、管理的全过程评估。关键词:智能制造评估模型;智能制造转型;全连接工厂;工业互联网标识0 引言受行业需求与技术创新的影响,全球制造业在历经了工业1.0机械化、工业2.0电气化和工业3.0自动

罗伯特技术屋 677

Java源码分析——String、AbstractStringBuilder、StringBuffer、StringBuilder类(一)——String类、intern方法

在Java中,与C++一样,也是亲自封装了字符串,命名为String类,用来对字符串的常用操作,其中Java也仿照String类设计出了其它的几个字符串类,用来处理String类不能处理的场景,分别是StringBuffer类与StringBuilder类

溯夜,逆流而上 244

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java——StringBuffer 不能直接使用equals比较两个对象是否相等

重拾Java基础了,StringBuffer由于没有重写equals方法,所以还是使用的Object的equals方法。对比的是两个对象的地址是否相等。而String 由于重写了equals方法,所以可以直接使用equals函数,对比两个对象是否相等。 源码如下: object类的equals方法: public boolean equals(Object obj) { r...

u014132820的专栏 2386

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2.3常用类-String Buffer类

String Buffer 基本: 可变的字符序列,可以对字符串内容进行增删 很多方法与String 相同,但String Buffer是可变长度的 String Buffer 是一个容器 类图结构: String 与 String Buffer 对比: String 保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率低 // private final char value[]; StringBuffer 保存的是字符串变量

CodeBear的博客 206

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java | StringBuffer源码分析

前言 StringBuffer类表示一个可变的字符序列。StringBuffer的API与StringBuilder互相兼容,但是StringBuffer是线程安全的。在可能的情况下,建议优先使用StringBuilder,因为在大多数实现中它比StringBuffer更快。 相关知识 String源码分析 源码分析 定义 public final class StringBuffer ...

cyc的专栏 4119

[Java基础] StringBuffer 和 StringBuilder 类应用及源码分析

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象; StringBuffer是线程安全的,StringBuilder不是; 扩容规则会根据新值+旧值的长度计算;

Java 技术专栏,从入门到精通,熟悉企业级开发 1525

Java中常用的类(一):Object 类、String 类、StringBuffer类、StringBuilder 类

目录 一、Object 类 1、equals 方法 2、toString 方法 二、String 类 1、字符串定义方式: 2、String 类常用构造方法 3、String 类的字符串的长度 4、String 类其他方法 三、StringBuffer 类 1、StringBuffer 常用方法使用 四、StringBuilder 类 一、Object 类 Object类...

ONESTARの博客 4276

二、Java中的String类、StringBuffer类、StringBuilder类

String类、StringBuffer类、StringBuilder类

在校大学生一枚 3184

从源码深入分析Java中 StringBuffer和StringBuilder的区别

从源码深入分析Java中 StringBuffer和StringBuilder的区别? StringBuffer 与 StringBuilder 中的方法和功能完全是等价的。 StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。 在单线程程序下,StringBuilder...

精◈彩◈猿◈笔◈记 1910

java的StringBuilder与StringBuffer类源码详解

java的StringBuilder与StringBuffer类源码详解 类的定义 abstract class AbstractStringBuilder implements Appendable, CharSequence { char[] value; int count; AbstractStringBuilder() { } Ab...

悦分享 723

【Java源码阅读系列5】深度解析StringBuilder与StringBuffer源码

在Java中处理字符串拼接时,StringBuilder与StringBuffer是最常用的工具类。它们的核心作用都是可变字符序列的高效操作,但二者的设计定位却有本质差异。本文将从源码层面深入解析两者的实现逻辑,并总结其适用场景。

专注Java和MySQL领域知识分享 3084

Java--String类(StringBuilder与StringBuffer)

我们发现父类中有两个成员变量:有一个是字符数组,一个是整型。而且如果是传带有参数的super会调用第二个构造函数,我们发现其实他是在new一个大小为capacity的字符数组!!也就是它的底层是字符数组,在字符数组的基础上进行修改,也就不会多次new性的对象,提高性能!

多敲代码防脱发的博客 1747

Java中StringBuffer类的replace方法

Java中StringBuffer类的replace方法 Java中StringBuffer类的replace方法在源码中定义如下: /** * @throws StringIndexOutOfBoundsException {@inheritDoc} * @since 1.2 */ @Override public synchronized StringBuffer replace(int start, int end, Strin

qq_43629580的博客 3019

【JDK源码】StringBuffer类源码分析

StringBuffer类

小确幸的博客 450
上一篇: SpringBoot___自定义消息转换器、MVC配置
下一篇: Java源码___StringBuffer类(二)
pseudonym_
博客等级 码龄10年 88粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值