一文了解Java 中的String、StringBuffer 与StringBuilder

String结构剖析

String是final 类,不能被其他的类继承

String有属性private final char vaLue[]; 用于存放字符串内容

注意: value 是个final类型, 不可以修改: 即value不能指向新的地址,但是单个字符内容是可以变化

两种创建String对象的区别

方式一:直接赋值String s1 = "hsp";//s1指向常量池的"hsp"

方式二:调用构造器String s2 = new String("hsp");//s2指向堆中对象

图解

图解

这里b.intern()方法最终返回的是常量池的地址(对象)

  1. String是一个final类, 代表不可变的字符序列

2)字符串是不可变的。一个字符串对象一旦被分配, 其内容是不可变的.

重要规则,Stringc1 = "ab" + "cd";常量相加,看的是池。Stringc1 = a + b;变量相加,是在堆中

结果=》hsp and hava

String类的常见方法应用实例

后面的最近去网上自己查就行

StringBuffer类

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。

很多方法与String相同,但StringBuffer是可变长度的。

StringBuffer是一个容器。

String VS StringBuffer

  1. String保存的是字符串常量, 里面的值不能更改,每次String类的更新实际 上就是更改地址,效率较低//private final char value[];

  2. StringBuffer保存的是字符串变量,里面的值可以更改,每次 StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高

//char[] value; // 这个放在堆

看源码就行

看源码就行

StringBuffer转换

StringBuffer常用方法

append:追加

练习题

看源码

看源码

第一题的底层源码在这

第一题的底层源码在这

StringBuilder类

StringBuilder和StringBuffer均代表可变的字符序列,方法是一样的,所 以使用和StringBuffer一样

1)一个可变的字符序列。此类提供一个 与StringBuffer兼容的API,但不保证同 步(StringBuilder不是线程安全)。该类被设计用作StringBuffer的一个简易 替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类, 因为在大多数实现中,它比StringBuffer要快

2)在StringBuilder上的主要操作是 append和insert 方法,可重载这些方法, 以接受任意类型的数据

看源码就行

看源码就行

一级引用如下:

synchronized:已同步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24执业药师报名时间汇总及报名流程!

24执业药师报名时间汇总!报名流程! 🕛️各省市报名时间汇总(共9地) 西藏:6月29日-7月8日 新疆:6月25日10:30-7月9日19:00 内蒙古:6月20日9:00-7月3日24:00 新疆兵团:6月2…

RPG游戏完整指南

环境:unity2021urp 本教程教大家如何使用Unity创建一个RPG游戏,玩家可以在城镇场景中进行导航并寻找战斗,并在战斗中遇到不同类型的敌人。玩家可以向敌人施加不同的动作,如:常规攻击和撤离。这会是一个十分有趣的体验。…

git将代码提交到github

第一次代码提交 1.在github新建一个空白仓库 2、当前在文件下 3、git init 5、git add .(当前目录下所有代码全部提交) 6、git commit -n "init" 这次提交的备注信息 7、git branch -M main 8、git remote add origin (address) 9、git push -u origin main 第…

格雷母线在无人天车定位中的应用

随着工业自动化的不断发展,实现无人天车的精准定位与高效运行,一套高精度的位移测量系统显得至关重要。格雷母线高精度位移测量系统,凭借其卓越的定位性能,成为无人天车的理想选择。 格雷母线高精度位移测量系统由武汉市微深节能科…

C# —— 显示转换

显示转换: 通过一些方法可以将其他数据类型转换为我们想要的数据类型 1.括号强转 作用: 一般情况下 将高精度的类型转换为低精度 // 语法: 变量类型 变量名 (转换的变量类型名称) 变量; // 注意: 精度问题 范围问题 sbyte sb 1; short s 1; int …

如何使用视频文案提取帮手将手机上视频里的声音转成文字?

在自媒体短视频日益增加的时候不少自媒体创作者如何将视频转文字的需求日益增加。本次将给大家分享一款针对广大职场青年用户群体的视频转文字工具,旨在为用户提供高效、准确的视频转文字服务。 如何将手机上的视频转成文字呢 视频转文字工具具有转换速度快&#…

Makefile的学习之路

目录 1、简介 2、语法规则 3、变量 4、函数 5、伪目标.PHONY 6、嵌套执行makefile 7、makefile示例 8、gcc编译选项 基本选项 调试选项 优化选项 警告选项 语言选项 链接选项 预处理选项 其他选项 1、简介 makefile是一个用于自动化构建程序的脚本文件&#xf…

轮式机器人Swiss-Mile城市机动性大提升:强化学习引领未来城市物流

喜好儿小斥候消息,苏黎世联邦理工学院的研究团队成功开发了一款革命性的机器人控制系统,该系统采用强化学习技术,使轮式四足机器人在城市环境中的机动性和速度得到了显著提升。 喜好儿网 这款专为轮腿四足动物设计的控制系统,能…

k8s 证书更新

如何使用脚本更新Kubernetes集群证书 引言 Kubernetes集群中,由kubeadm初始化的证书有效期默认为一年。当这些证书接近或已经超过有效期时,它们必须被更新以保证集群的正常运作。本文将介绍如何使用特定脚本来更新这些证书,将它们的有效期延…

机械臂抓取物体整体的开发流程

开发一个机械臂抓取物体的系统涉及多个步骤和不同领域的知识,包括机械设计、控制系统、传感器集成、软件开发等。以下是一个全面的开发流程概述: 1. 需求分析与系统设计 需求分析: 明确机械臂需要抓取的物体类型(大小、重量、材…

【redis过期删除】

redis过期删除 redis的键可以设置过期时间,但是并不是每个键一到过期时间就会立即删除,redis不可能给每个设置过期时间的key上添加一个定时器来监视是否过期,CPU根本承受不了如此多的定时线程 注意:我使用的版本是6.0.10&#xf…

618必抢清单:内存升级国货更强,DDR5劲爆大白菜

随着数字时代的加速发展,平时在PC上玩游戏、办公的时候,电脑性能对我们的影响越来越打。相比于CPU、显卡等硬件,内存对于电脑性能的重要性也很高,而且可以通过更低的成本来升级。内存就像是电脑的神经网络,影响着CPU数…

linux中unattended-upgr是什么,如何关闭

unattended-upgrades 是 Ubuntu 操作系统自动更新软件包的一个进程。它默认开启,定期检查可用更新并自动升级。 要关闭 unattended-upgrades 进程,您可以执行以下步骤: 进入命令窗口。 输入以下命令并运行: sudo systemctl st…

超强生图模型,抢先体验!

文生图模型Stable Diffusion 3 Medium开源啦!优刻得GPU云主机目前已上线该模型镜像,开箱即用,即刻体验!具体操作见文末。 近年来,生成式人工智能的快速发展正在改变我们的生活。作为这一领域的前沿技术之一&#xff0…

成都跃享未来教育咨询解锁新篇章

在快节奏的现代社会中,每个人都在追求着属于自己的非凡人生。而成都跃享未来教育咨询,正是那个能够智慧引领你走向成功、成就非凡人生的灯塔。 跃享未来教育咨询,位于历史悠久的文化名城成都,这里不仅有丰富的文化底蕴&#xff0c…

Score Matching(得分匹配)

Score Matching(得分匹配)是一种统计学习方法,用于估计概率密度函数的梯度(即得分函数),而无需知道密度函数的归一化常数。这种方法由Hyvrinen在2005年提出,主要用于无监督学习,特别…

python-03

使用File操作文件 open(file, moder, buffering-1,encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) file:要打开的文件 mode:文件打开模式。默认访问模式是读(r) buffering:缓冲区大小 encodin…

【proteus仿真】基于51单片机的电压检测系统

【proteus仿真】基于51单片机的电压检测系统 资料下载地址:关注公众号 小邵爱电子 获取 1.前言 使用51单片机和ADC模块设计一个数字电压表,将模拟信号0~5V之间的电压转换为数字量信号,并通过LED实时显示电压数据 、 2.仿真原理图 3.硬件…

java的深拷贝和浅拷贝

总结: 深拷贝:无论是基本类型还是引用类型都会创建新的实例。 浅拷贝:对于基本类型就是复制其值,对于引用类型则是复制了指向这些数据类型的内存地址。 浅拷贝(Shallow Copy) 浅拷贝是指在创建新对象时&am…

AI写代码,CS还有前途吗?加州大学伯克利分校:CDSS申请人数激增48%!

目录 01 CS入学人数暴涨 02 人类Coder可堪大任 03 AI还没有学会创新 04 编程与农耕不同 AI写了这么多代码,你还应该学习计算机科学吗? 新的数据显示,学生们仍然热衷于选修计算机科学:加州大学伯克利分校(UCB&#…