Java源码___StringBuffer类(二)

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

 java.lang.StringBuffer类分析摘要:
<1>trimToSize( )方法
<2>setLength( int newLength )方法
<3>icharAt(int index)方法
<4>codePointAt(int index)方法

1.trimToSize( )方法
 该方法会改变该类缓存区的大小,该方法与AbstractStringBuilder类中方法实现一样,不过是多了一个同步而已。

//【重写自AbstractStringBuilder类】
@Override
public synchronized void trimToSize(){
    if(count < value.length){
        value = Arrays.copyof(value, count);
    }
}

基本属性:public公有、synchronized同步。。

 方法注意:
 该方法的使用可能会减少字符序列的存储大小,如果容量大小本身超过了存储字符所需要的容量,那么就会将该容量减少到刚好能够存储这些字符的容量。该方法主要的目的是为了提高空间效率,并且会影响后续调用的capacity()方法的返回值。

 
2.setLength((int newLength)方法
 该方法用于改变缓存字符的字符长度和字符内容,该方法与AbstractStringBuilder类中方法实现一样,不过是多了一个同步而已。

//【重写自AbstractStringBuilder类】
@Override
public synchronized void setLength(int newLength){
    toStringCache = null;
    super.setLength(newLength);
}

基本属性:public公有、synchronized。
参数:newLength
参数说明:要改变成的字符长度大小。
异常:StringIndexOutOfBoundsException
异常说明:如果传入的参数为负数的话,则会出现该异常。

 该方法的源码思路是:
<1>首先将变量toStringCache设置为null。
<2>然后判断是否参入实参newLength是否为负数,如果为负数,则抛出字符串角标越界异常。
<3>再次使用ensureCapacity方法来调整缓存区大小,不够则增加,够则不增加。
<4>如果是增加字符长度,则会保留原来的字符,然后不够的用空字符补上。
<5>将count的大小调整为newLength。

 

3.charAt(int index)方法
 重写字符序列接口CharSequence的方法,用于获取特定特定位置的字符,该方法与AbstractStringBuilder类中方法实现一样,不过是多了一个同步而已。

//【重写自AbstractStringBuilder类】
@Override
public synchronized char charAt(int index){
    if((index<0) || (index>=count)){
        throw new StringIndexOutOfBoundsException(index);
    }
    return value[index];
}

基本属性:public公有、synchronized同步
参数:index
参数说明:要获取的位置,即下标。
异常:StringIndexOfBoundsException(index)
异常说明:如果传入的实参index为负数或者超过了字符的长度,则抛出此异常。
返回值:char
返回值说明:字符,指定位置对应的char字符。
返回值说明:如果String对象的长度为0则返回true,否则返回false

 方法说明事项:
该方法会返回对应位置的字符,所以如果传入的字符不存在,就会抛出越界异常。
该方法实际上返回的就是value[index]的字符。

 
4. codePointAt(int index)方法
 获取对应位置的字符的Unicode解码值,该方法与AbstractStringBuilder类中方法实现一样,不过是多了一个同步而已。

//【重写自AbstractStringBuilder类】
@Override
public synchronized int codePointAt(int index){
    if((index<0) || (index>=count)){
        throw new StringIndexOutOfBoundsException(index);
    }
    return Character.codePointAtImpl(value, index, count);
}

基本属性:public公有、synchronized同步。
参数:index
参数说明:要获取的位置,即下标位置。
异常:StringIndexOfBoundsException(index)
异常说明:如果要获取的位置不存在,则抛出此异常。
返回值:int
返回值说明:返回某个字符的Unicode解码值。

 该方法的主要作用是:返回字符串中下表为index的字符的Unicode的解码值。

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛 15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。 阅读详情

相关推荐

阿里天池新闻推荐实战:多路召回策略解析与优化

本文深入解析阿里天池新闻推荐项目中的多路召回策略,包括ItemCF、UserCF、YouTubeDNN等五种召回模型的协同应用与优化技巧。通过实战案例展示如何提升推荐系统效果,特别针对冷启动问题提出创新解决方案,帮助开发者构建高效的新闻推荐系统。

weixin_26918763的博客 415

stringbuffer用法 java_Java StringBuffer trimToSize()用法及代码示例

StringBuffer类的trimToSize()方法是一种内置方法,用于修剪用于StringBuffer对象的字符序列的容量。如果StringBuffer对象使用的缓冲区大于保留其当前字符序列所需的缓冲区,则将调用此方法以调整StringBuffer对象的大小,以将该对象转换为空间效率更高的对象。调用此方法可能会(但不是必须)影响以后对capacity()方法的调用返回的值。用法:public...

weixin_39781323的博客 347

Lisflood

文献:基于SWMM和LISFLOOD-FP模型的居住区低影响开发模拟评价。问题:多个节点溢流同时,不行,待解决。目录下,cmd命令行。

警警的博客 2663

关于StringBuffer.setLength和trimToSize

首先声明jdk-version:7u40 好了,先新建一个StringBuffer. StringBuffer aa = new StringBuffer("12345");下面是jdk源码: public StringBuffer(String str) { super(str.length() + 16); append(str); } super()

coding 3147

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1136

RTT Studio和Cubemx联合开发

1. RTT studio创建工程 创建工程 ## 创建完成以后的目录结构 2. 配置CubuMx 双击cubumx的图标打开CubeMx 配置时钟 生成代码 构建后的代码结构 编译代码满屏错误:不要慌 3. 新增脚本 新建scons脚本文件 SConscript 脚本内容如下 import os from building import * cwd = GetCurrentDir() src = Glob('*.c') # add cubemx drivers src = Split('''

Car12 1565

StringBuilder/StringBuffer setLength(0) 和 trimToSize()使用

StringBuilder/StringBuffer setLength(0) 和 trimToSize()使用

if_you_can_please_do的博客 810

ArcGIS Pro 3.4 二次开发 - 布局

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下操作布局工程项的相关方法。主要内容包括:引用布局工程项和关联布局,在新视图中打开或激活已有布局视图,引用活动布局视图,导入/移除布局工程项,创建基本布局或带参考线的自定义布局,修改布局页面尺寸,以及创建圆形图形元素等操作。重点演示了如何通过CIM(Core Infrastructure Model)进行高级布局配置,并详细说明了圆形图形元素的创建过程,包括几何构建、符号设置和图形生成。所有涉及UI线程的操作都遵循ArcGIS Pro SDK

Winemonk 795

Java StringBuffer void trimToSize()方法(带示例)

StringBuffer类void trimToSize() (StringBuffer Class void trimToSize()) This method is available in package java.lang.StringBuffer.trimToSize(). 软件包java.lang.StringBuffer.trimToSize()中提供了此方法。 This meth...

431

基于深度学习的三维重建算法——详解与实现

随着深度学习技术的迅猛发展,基于深度学习的三维重建算法在最近几年取得了显著的进展。而基于深度学习的三维重建算法通过利用深度神经网络,能够从大规模数据中学习到更准确、鲁棒的三维结构表示。本文综述了基于深度学习的三维重建算法,并给出了相应的源代码。随着深度学习技术的不断发展,我们相信基于深度学习的三维重建算法将会在未来得到更广泛的应用。实验结果表明,基于深度学习的三维重建算法在准确性和鲁棒性方面取得了显著的提升。以上是关于基于深度学习的三维重建算法的详细介绍与实现,希望对您有所帮助。

CyberGenius的博客 1228

使用ArcGIS Pro进行土地利用分类的机器学习与深度学习

传统的土地利用分类方法通常依赖于手动解译和规则定义,但随着机器学习和深度学习的发展,我们现在可以利用这些技术来自动化和提高分类的精度。ArcGIS Pro是一种功能强大的GIS软件,它提供了丰富的工具和功能,可以支持土地利用分类的机器学习和深度学习。我们将首先讨论数据准备和预处理的步骤,然后介绍常用的机器学习和深度学习方法,并提供相应的源代码示例。这可以通过人工标注或半自动的方式完成。数据裁剪:根据研究区域的范围,裁剪遥感影像数据,以减少计算和存储的负担,并确保只包含感兴趣的土地利用区域。

code_program481的博客 2039

java中StringIndexOutOfBoundsException异常问题

Java中StringIndexOutOfBoundsException异常解决

m0_62362962的博客 2万+

使用MATLAB的COMSOL LiveLink:实时连接和数据传输

COMSOL LiveLink是一种功能强大的MATLAB工具包,它允许用户在MATLAB环境中与COMSOL Multiphysics软件进行实时连接和数据传输。COMSOL LiveLink是一种功能强大的MATLAB工具包,它允许用户在MATLAB环境中与COMSOL Multiphysics软件进行实时连接和数据传输。使用COMSOL LiveLink,你可以进行更复杂的模型设置和数据传输使用MATLAB的COMSOL LiveLink:实时连接和数据传输。

PixelNinja的博客 2093

Java源码分析——String、StringBuffer、StringBuilder类(二)——AbstractStringBuilder抽象类

在Java中,关于字符串类分为两种,一种是上篇博客讲的String类,即不可变字符串类,另外一种则是可变字符串类,

溯夜,逆流而上 309

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

String类、StringBuffer类、StringBuilder类

在校大学生一枚 3184

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java | StringBuffer源码分析

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

cyc的专栏 4119

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

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

从源码深入分析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中的StringBuffer类

【代码】Java中的StringBuffer类。

SakuraMG的博客 2812

【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

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

【JDK源码】StringBuffer类源码分析

StringBuffer类

小确幸的博客 450

【 java 常用类】StringBuffer 源码分析以及 StringBuffer 底层的数组扩容机制

相信大家对 String、StringBuffer和StringBuilder都非常了解,其中StringBuffer和StringBuilder基本差不多,因此本篇博客将以StringBuffer为入口进行源码分析,并说明String、StringBuffer和StringBuilder的区别以及StringBuffer 底层的数组扩容机制!

阿牛的博客 1841
上一篇: Java源码___StringBuffer类(一)
下一篇: SpringBoot___项目开发整合及设置(一)
pseudonym_
博客等级 码龄10年 88粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值