Java学习笔记(四)String、StringBuilder、StringBuffer

String、StringBuffer、StringBuilder String、StringBuffer常用方法参考手册 阅读详情

String

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence 
  • String类属于Object的子类
  • String实现的接口有:Serializable(序列化), Comparable(可排序), CharSequence(对字符序列提供只读访问)
  • String类的实例用来描述使用双引号包裹的字面量
  • String类使用final修饰,不可更改
  • 每一个修改String对象的方法,实际上都创建了一个新的String对象,其中包含新的字符串内容



StringBuilder

public final class StringBuilder
	extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence

abstract class AbstractStringBuilder 
	implements Appendable, CharSequence {
	
	/**
     * The value is used for character storage.
     */
    char[] value;

    /**
     * The count is the number of characters used.
     */
    int count;

	...
}

public interface Appendable
  • StringBuilder是AbstractStringBuilder的子类
  • AbstractStringBuilder是抽象类,实现的接口有Appendable(对字符序列提供追加内容操作)、CharSequence(对字符序列提供只读访问)
  • StringBuilder实现的接口有Serializable(序列化), CharSequence(对字符序列提供只读访问)
  • 字符串的值、字符数量保存于AbstractStringBuilder中
  • 线程不安全



StringBuffer

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

	/**
     * A cache of the last value returned by toString. Cleared
     * whenever the StringBuffer is modified.
     */
    private transient char[] toStringCache;

	....
	
	@Override
    public synchronized String toString() {
        if (toStringCache == null) {
            toStringCache = Arrays.copyOfRange(value, 0, count);
        }
        return new String(toStringCache, 0, count);
    }
   
   	....
}
  • StringBuffer类继承关系与StringBuilder相同
  • 与StringBuilder区别在与,StringBuffer对字符操作的相关方法都使用synchronized同步锁修饰,对StringButter操作是线程安全的
  • StringBuffer中维护了一个字符序列缓存toStringCache ,用来缓存最近一次toString方法执行之后的内容
  • 如果toStringCache为空,就使用保存于AbstractStringBuilder中的字符数组value,以及字符数量count,结合Arrays.copyOfRange方法,生成一份value的复制,保存于toStringCache中
  • 如果toStringCache不为空,调用toString()时,就直接使用toStringCache创建一个String对象,作为toString()方法的返回值
  • 在对内容执行修改之前,缓存toStringCache会被清空,只有在toString()方法执行时,才会更新toStringCache的值
STM32F411CEU6实战:用W25Q64存储多张图片,在240x240 LCD上轮播显示(附源码) 本文详细介绍了如何使用STM32F411CEU6通过SPI接口管理W25Q64 Flash中的多张图片,并在240x240 LCD上实现平滑轮播显示。内容涵盖硬件配置、图片存储方案设计、轮播系统实现及性能优化技巧,特别针对SPI传输优化和多图存储管理提供了实用解决方案。附源码,适合嵌入式开发者参考。 阅读详情

相关推荐

主成分分析(PCA)和局部线性嵌入(LEE)原理详解

从KNN谈“维度灾难”,介绍线性降维PCA和局部线性嵌入LLE 这两种降维方法的原理

superzzx0920的博客 5617

Object类和String类

Object类与String类

qq_52463861的博客 2224

RK3588工业开发板实战:如何用IgH EtherCAT主站精准控制伺服电机(附完整代码)

本文详细介绍了如何利用RK3588工业开发板和IgH EtherCAT主站实现伺服电机的精准控制。从硬件选型、实时内核配置到EtherCAT主站安装和核心代码实现,提供了一套完整的工业自动化解决方案,特别适合需要高精度运动控制的场景。

pca5navigator的博客 972

Java基础---字符串(String)操作类

1.String类如何创建对象 String类---不可变的字符串操作类 String类---Java的jdk提供好的开发类。【java.lang包不用import】 String类---使用final修饰符修饰的,没有子类,不可继承。 String类创建对象---构造方法 String()---创建一个空字符串对象 String(byte[] bytes,into offset,int length)---字节数组转换为字符串 string(char[] value,into offset

airar的博客 759

告别混乱接线!用EPLAN 3D布局图,手把手教你搞定电气柜的3D建模与自动布线

本文详细介绍了如何使用EPLAN 3D布局图进行电气柜的3D建模与自动布线,帮助工程师告别混乱接线。从项目准备、基础结构建模到智能设备布局与逻辑定义,再到高级布线技术与问题排查,提供了一套完整的实战指南。通过EPLAN的3D功能,显著提升设计效率与系统可靠性。

weixin_30680385的博客 341

CAB单片机开发指南

CAB单片机开发使用指南,IDE安装及烧录注意事项

Zoebuxiangtian的博客 1559

Java String类详解

String字符串类 字符串对象,程序中定义""都是字符串对象,这个对象的使用频率最高. 字符串类 java.lang.String类,继承Object类,实现了三个接口. 程序中只要你写 "里面任意" 都是String类的对象. 字符串对象是常量,一旦创建不能修改. 字符串对象创建 public static void main(String[] args) { //字符串创建,2个方式 //直接=创建 String s = "abc"; //使用构造方法创建

m0_61759645的博客 824

记一次完整的RPG Maker MV游戏逆向过程(思路一)

了解RPG Maker MV的文件建构 上一篇文章,我们已经成功在PC上运行了游戏,那我们如何对游戏进行逆向呢? 首先要了解正常的RPG Maker MV制作的游戏应该具有哪些文件,以及他的结构 那如何了解他的结构呢,很简单,我们只需要用RPG Maker MV创建一个默认工程,来看看一个游戏的最简结构是怎么样的 创建新项目 项目创建完成 查看项目目录结构 是不是和之前解包出来的很像呢? 通...

Ciiiiiing的博客 1万+

(十二)Object和String

Object和String面向对象讲完之后就是API,也就是我们现在要说的这些,这里面我们会接触大量的方法,只有多看多用,你才能记住,下面我们就来说一下常用的类。Object class(对象类)Objec是Java中的顶级父类,Java中所有的类都默认直接或者间接的继承object。Objec是Java中唯一没有父类的类,任何一个类的对象都可以用Object对象接住。1、构造方法摘要构造方法中提供

云飞扬0o的博客 7446

从零到一:Abaqus与Matlab联合仿真的自动化流程构建指南

本文详细介绍了如何构建Abaqus与Matlab联合仿真的自动化流程,涵盖基础架构设计、关键接口技术实现、结果提取与处理技术以及高级参数化优化流程。通过Python脚本作为桥梁,实现数据传递和任务控制,帮助工程师提升仿真效率。特别强调了版本兼容性、异常处理和性能监控等实用技巧。

weixin_29090089的博客 612

YOLO系列专栏(六):YOLO26热力图可视化 | 解析模型推理逻辑,定位检测关键区域

YOLO26作为新一代目标检测模型,其核心优势是高效的特征提取和精准的目标定位,但模型内部的推理过程的“黑盒”特性,给我们的优化带来了很大困扰:❌ 检测精度低:不知道是模型没学到关键特征,还是特征提取不充分;❌ 出现误检/漏检:无法定位问题根源——是锚框不合适?还是特征图未捕捉到目标?❌ 模型优化盲目:调参、修改网络结构全靠“猜”,缺乏针对性;❌ 难以解释模型行为:实际项目中,需要说明模型“为什么检测到这个目标”,尤其是医疗、工业等对可解释性要求高的场景。而热力图可视化。

qq_36130719的博客 740

Java的String类、Object类、包装类

Java的String类、Object类、包装类

谢广涛的博客 3027

《AgentScope-Java 深入浅出教程》第2章 环境搭建与第一个智能体

创建// 【导入说明】/*** 时间相关工具类* 工具类是普通的 Java 类,通过注解声明为工具。* 智能体可以根据用户需求自动调用这些工具。*/// 【工具定义】获取当前时间@Tool(name = "get_current_time", // 工具名称:LLM 看到的名称description = "获取指定时区的当前时间" // 工具描述:帮助 LLM 理解何时使用// 【参数定义】// @ToolParam 的 name 属性是必需的!

步子哥的博客 418

Java学习笔记(四)String类、StringBuffer和StringBuilder

Object、包装类、数学处理类的常用方法 文章目录一、String类常量池常用的构造方法常用的成员方法正则表达式相关的方法二、 StringBuffer和StringBuilderStringBuilder类常用的成员方法 一、String类 String类由final关键字修饰,表示该类不能被继承。 从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一些空间。 常量池 由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出

qq_41939242的博客 271

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于String、StringBuffer、StringBuilder的区别

最近看到了一道题目: 正确答案:C 下面就这题的其他选项给出解析: String String不可变!先来看看String的源码: public final class String implements Serializable, Comparable<String>, CharSequence { private final byte[] value; priva...

江璇Up 4549

IMSL CNL 7.0.0 (x86-64)Crack

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

String、StringBuilder、StringBuffer

String、StringBuilder、StringBuffer

pig_ning的博客 592

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

String,StringBuffer,StringBuilder的区别

String、StringBuffer和StringBuilder都是用于处理字符串的类,它们之间的区别如下: String:String类是不可变的,也就是说一旦创建了一个String对象,它的值就不能被修改。每次对String对象进行操作(拼接、替换等),都会创建一个新的String对象,这会产生大量的临时对象,影响性能。 StringBuffer:StringBuffer是可变的,可以对其进行修改操作。在对字符串进行频繁操作时,使用StringBuffer比直接使用String效率更高,因为Str

4万+

String、StringBuffer、StringBuilder的区别

String 类实现了 CharSequence 接口。字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可以看到,初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新在栈堆内存中开辟

weixin_50687701的博客 1067

java中String、StringBuffer和StringBuilder的区别

简单介绍 java中用于处理字符串常用的有三个类: 1、java.lang.String 2、java.lang.StringBuffer 3、java.lang.StrungBuilder 三者共同之处:都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。 StringBuffer是线程安全,可以不需要额外的同步用于多线程中; StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,

plpldog的博客 1587

Java学习笔记 String、StringBuffer与StringBuilder

文章目录一、String字符串1.1、认识String类1.2、String两种赋值方式(=、new)1.3、字符串赋值的各类情况1.4、认识intern()方法1.5、常用方法相关面试题二、StringBuffer类2.1、认识StringBuffer类2.3、常用方法2.2、源码分析三、StringBuilder四、String、StringBuffer、StringBuilder对比参考文章 一、String字符串 1.1、认识String类 String:表示为字符串,可以使用字符串字面值与类实

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 934

Java中String StringBuffer StringBuilder比较

简述: 试着比较下Java中String StringBuffer StringBuilder的性能 知识点: String StringBuffer StringBuilder 1.  test1() 结果可知String的效率最好 result字符串先做”Hello“ + ”World!" 处理,然后才赋值给result,之开辟了一次内存段 2.  test2

霖林烟雨 1472

Java stringbuilder StringBuffer String

stringbuilder 原理 在Java中有String Stringbuilder Stringbuffer,但是 stringbuilder 时运行最快的一个 速度 Stringbuilder > Stringbuffer > String, 但是StringBuffer synchronized 关键字进行修饰,所以是时线程安全的,而Stringbuilder时不安...

qq_42128262的博客 1184

Java String、StringBuilder、StringBuffer

并不是,编译器会自动优化代码,把修改String的操作转换为:创建一个StringBuilder,使用StringBuilder进行字符串的(1个或多个)修改操作,修改完成后将StringBuilder转换为String返回。编译器会优化为:在循环体中,创建一个StringBuilder,使用StringBuilder进行字符串的修改,转为String返回。如果所需容量大于 原容量*2 + 2,则扩容为实际所需容量(将要存储的字符长度),否则扩容为 原容量*2 + 2。都是使用char[ ]来存储字符。

chy-x 的博客 585

Java中的String、StringBuilder、StringBuffer类

字符串类型是我们开发时使用比较多的数据类型了,下面浅谈一下Java的几个字符串类:String、StringBuilder、StringBuffer。三种方式本质上都是对基本数据类型char进行操作的。String、StringBuilder和StringBuffer都是Java中用于处理字符串的类,它们有一些共同点和区别。String:String是不可变的字符串类,一旦创建就不能被修改。每次对String进行修改操作,都会创建一个新的String对象。这种特性使得String在多线程环境下是线程安全。

weixin_44907888的博客 661

Java中的String、StringBuilder、StringBuffer

使用String适用于字符串不频繁修改且不需要线程安全的场景。 使用StringBuilder适用于单线程环境下需要频繁修改字符串的场景。 使用StringBuffer适用于多线程环境下需要频繁修改字符串的场景。

Broken_x的博客 1058

Java的String、StringBuilder、StringBuffer详解

目录 String常见创建方式 String特性 StringBuilder特性 StringBuffer特性 个人总结 正文 String常见创建方式 String s1 = "Hi!"; // 最常用的String创建方法 String s2 = new String("Hi!"); // 当不想使用字符串常量池中的值时,可使用此方法创建新String对象 String特性 S...

码农博客 707
上一篇: Java学习笔记(三)程序设计六大原则
下一篇: 对Android程序代码规范的一些思考
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值