java学习--String类StringBuffer类StringBuilder类

String类简介

关系图:

value不可修改的是value指向的地址,因为可以value为一个数组,而数组名其实就相当于一个指针,指向着一块地址,然后在指向的地址里存放相应的值,值可以任意是什么,但是地址不可改变

创建对象方式

内存分布图

现在堆开辟空间将value数组存放在其中然后在常量池找有没有想要的这串字符,有就直接指向拿来,没有就新创建

例题

去常量池找有没有相应的字符串,有就直接指向,没有就新建

b.intern返回的是b的字符串地址,而b他是指向堆中的地址由堆中地址指向常量池的,所以两个地址不同最后一个为false

没有new一个String,只要常量池有这串字符,那么就是相等的指向已有的

特性以及例题

他是先在常量池创建一个对象存放hello,然后再在常量池找有没有haha,没有就重新创建一个哈哈,而不是直接改变hello

我们Debug进去可以发现,直接来到了StringBuilder的无参构造器,那么代表其实进行了StringBuilder stringbuilder=new StringBuilder()动作

再然后我们可以看出来,先把hello传入其中

、然后再是abc

再来到了toString 他return了一个new String(value ,0,count),就代表新创建了一个对象,value为一个字符串数组存放了之前传进来的值,count为个数,所以,c其实新建了个对象在堆中用,其中的value指向常量池存放了字符串

这个其实值得注意的是调用方法时,传进去的是地址还是参数,首先,我们都知道,数组名代表的其实就是数组的地址,所以,传进去的是地址,那么在方法中改变数组的值,实际值也会改变,但是,字符串传进去的就是字符串而已,并非其地址所以,他在方法中改变,并不会影响外部的值

所以最终的结果是hspandhava

String类常见方法

StringBuffer类简介

关系图

String类与StringBuffer类比较

StringBuffer类构造器简介

String与StringBuffer转换方式

StringBuffer类常用方法

append源码

改写的toSTring

delete

replace

例题

import java.util.Scanner;/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
*/public class StringBurber_
{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String str=scanner.next();String str1=scanner.next();StringBuffer stringBuffer = new StringBuffer(str1);int i=stringBuffer.indexOf(".");for (i=i-3;i>0;i=i-3){stringBuffer=stringBuffer.insert(i,",");}System.out.println(stringBuffer);}
}

StringBuilder类简介

关系图

String,StringBuffer,StringBuilder类比较

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

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

相关文章

RedHat Enterprise Linux 7 YUM源(本地/网络源)配置详解

目录 一、挂载 二、建立本地源 三、建立网络源 四、验证可行性 一、挂载 ——将光盘挂载到 /mnt 下 当/mnt中有如图内容时,即挂载成功 若挂载光驱/dev/sr0时报错:mount: no medium found on /dev/sr0 解决措施:查看该设备状态是否全部勾选…

MATLAB仿真:数字信号处理IIR数字滤波器设计

目录 1.实验目的 2.实验原理 3.实验仪器及设备 4. 实验内容及步骤 5.信号产生函数mstg清单 6.实验程序及波形如下: 1.实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理…

Python——Pandas(第三讲)

文章目录 修改替换变量值对应数值的替换指定数值范围的替换 虚拟变量变换数值变量分段数据分组基于拆分进行筛选 分组汇总使用 agg 函数进行汇总引用自定义函数 长宽格式转换转换为最简格式长宽型格式的自由互转 多个数据源的合并数据的横向合并concat 命令 处理缺失值认识缺失…

使用SimpleAI库中的A*搜索算法的示例程序,用于找到从起始位置到目标位置的最短路径

以下是一个使用SimpleAI库中的A*搜索算法的示例程序,用于找到从起始位置到目标位置的最短路径。 from simpleai.search import astar, SearchProblemclass GridProblem(SearchProblem):def __init__(self, initial_state, goal_state):self.initial_state initial…

【题解】328. 奇偶链表(链表)

https://leetcode.cn/problems/odd-even-linked-list/description/?envTypestudy-plan-v2&envIdleetcode-75 class Solution { public:// 定义一个函数,用于将链表中的奇数和偶数节点分开ListNode* oddEvenList(ListNode* head) {// 创建两个哑节点&#xff…

python+vue3+onlyoffice在线文档系统实战20240723笔记,项目界面设计和初步开发

经过之前的学习,已经能够正常打开文档了。 目前为止,我们的代码能够实现: 打开文档编辑文档手动保存自动保存虽然功能依然比较少,但是我们已经基本实现了文档管理最核心的功能,而且我们有个非常大的优势,就是支持多人同时在线协同编辑。 现在我们要开发项目,我们得做基…

Mojo 编程语言详解

引言 Mojo 是一种新兴的编程语言,它专为现代互联网应用而设计,特别适合构建高并发、低延迟的微服务架构。Mojo 旨在提供一种简单、高效的方式来编写服务器端应用,并且能够充分利用现代硬件的能力。本文将深入探讨 Mojo 的特点、基本语法、核…

抽奖大转盘uni-push使用websocket协议实现uniapp+uniCloud实时推送在线互动抽奖项目打包H5微信小程序_咸虾米

嗨,大家好,我是爱搞知识的咸虾米,今天给大家带来的这们课程是使用uni-push实时推送,完成的在线互动抽奖综合项目。 常规的页面只有在手动刷新的时候,才能获取到服务端最新的数据,而websocket可以实现长连…

OpenJudge | 放苹果

总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法…

里程计在激光雷达slam中的作用

在tf树中的父坐标系和子坐标系中间的odom 机器人在平直走廊中由于缺少参照物的变化,无法估计自己的位移;可以通过轮子转动的圈数和一 圈的位移来计算距离,这种通过电机转速计算机器人位移的方法就是常用的电机里程计;里程计不 是…

jdk8——lambda表达式

在 Java 8 中引入了 Lambda 表达式,使得代码更加简洁和易读。Lambda 表达式是一种匿名函数,可以作为参数传递给方法或者存储在变量中。它主要用于简化函数式编程。 Lambda 表达式只能用于实现函数式接口。函数式接口是只包含一个抽象方法的接口&#xf…

简单高效的在线拾色器工具 - 为您的设计工作提供便利

你是否曾在寻找完美颜色时感到困扰?现在,有了这个简单而强大的在线拾色器工具,选择理想的颜色变得轻而易举! 网址: https://potatoh5games.fun/tools/#ColorPickr 这款拾色器工具具有以下特点: 用户友好…

golang 文件

golang 文件 概念 文件是计算机系统中用于存储和管理的 数据集合,具有唯一的名称,存在于存储介质上,包含创建、修改等属性,通过文件系统进行组织,用户可进行读取、写入等操作 文件流 文件输入流(InputS…

kafka 各种选举过程

一、kafka 消费者组协调器 如何选举 Kafka 中的消费者组协调器(Group Coordinator)是通过以下步骤选举的: 分区映射: Kafka 使用一个特殊的内部主题 __consumer_offsets 来存储消费者组的元数据。该主题有多个分区,每…

Linux进程控制——进程等待

文章目录 进程等待进程等待的必要性进程等待的方法status参数option参数 进程等待 进程等待的过程其实是父进程等待子进程死亡的过程 进程等待的必要性 如果子进程退出,父进程不进行处理,子进程会变成僵尸进程,有内存泄漏的风险 僵尸进程…

Adobe Acrobat Pro DC for Mac:PDF处理软件

Adobe Acrobat Pro DC for Mac是一款专为Mac用户设计的PDF处理软件,它凭借出色的功能和卓越的性能,成为了处理PDF文件的理想选择。 首先,Acrobat Pro DC for Mac支持全方位的PDF编辑。用户可以对PDF文档进行文本编辑、图像处理、表格制作等操…

Paddlenlp测试

1、环境安装 使用华为云euleros操作系统,python版本3.9.5,CPU无GPU服务器: (1)pip3 install setuptools_scm -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com (2&#xf…

机器学习算法与Python实战 | 两行代码即可应用 40 个机器学习模型--lazypredict 库!

本文来源公众号“机器学习算法与Python实战”,仅用于学术分享,侵权删,干货满满。 原文链接:两行代码即可应用 40 个机器学习模型 今天和大家一起学习使用 lazypredict 库,我们可以用一行代码在我们的数据集上实现许多…

Python 潮流周刊#62:试用自由线程 Python(摘要)

本周刊由 Python猫 出品,精心筛选国内外的 250 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 分享了 12 篇文章&…

SQL Server数据库升级与迁移:平稳过渡的艺术

SQL Server数据库升级与迁移:平稳过渡的艺术 在数据库的生命周期中,升级和迁移是不可避免的操作。无论是升级到SQL Server的新版本,还是迁移到新的服务器或云环境,都需要谨慎处理以确保数据的完整性和业务的连续性。本文将详细介…