[java]String类

news2024/9/28 1:24:33

String表示字符串类型。

注意c中没有表示字符串的类型。

 String内部包含如下两个变量。

 

java中String结尾没有/0,java不需要/0标注结束位置。 

 str2代表指向的对象内容为空,str3代表不指向任何对象。

 

 

 str1和str2指向对象不一样,所以不相等

 可以用如下方式判断对象中的内容是否相等。

这个equal是string自己的equal。 

 

 

 下面的是忽略大小写进行比较。

 

 利用charAt操作字符串中的字符。

 indexof可以查看某个字符在哪个位置。

 还可以指定从哪个位置开始找。

 

 lastInderof是从后往前找但返回结果还是从前往后数的数。

 下面代表从第6个位置开始往前找第一个o。

返回的是数组下标。

 valueof将其他类型转换为字符串。

 我们发现valueof可以将各种类型转换为字符串。

 变大小写。

 

 下面用replace可以进行替换,替换不是在原先字符串本身上改变的。

 

 

我们发现按.分割不能打印。

 我们可以用两个斜杠进行转义。

 str3中如果要用\作字符至少需要两个\,split中如果以\分割,至少有4个。

 如果想以不同的字符作为间隔,中间要加"|"。|

1. 字符 "|","*","+" 都得加上转义字符,前面加上 "\\" .
2. 而如果是 "\" ,那么就得写成 "\\\\" .
3. 如果一个字符串中有多个分隔符,可以用 "|" 作为连字符

还可以多次分割。 

subString也是不会改变原先字符串的,只是赋值给ret后去掉一部分字符串。 原先的字符串会放到常量池,所有被双引号引起来的都会进常量池。

 trim能够删除字符串两边的空格。

str1指向的是字符串在常量池中的地址。 和new出来的str2的内容不一样。

 下面这俩都在常量池中,所以地址一样。

String 是一种不可变对象 . 字符串中的内容是不可改变。字符串不可被修改
1. String 类在设计时就是不可改变的, String 类实现描述中已经说明了
value被private修饰,并且类中没有实现调用value的方法,所以无法改变value的值

String 类中的字符实际保存在内部维护的 value 字符数组中
1. String 类被 fifinal 修饰,表明该类不能被继承
2. value 被修饰被 fifinal 修饰,表明 value 自身的值不能改变,即不能引用其它字符数组,但是其引用空间中 的内容可以修改。

  • 字符串修改

下面是上面的实现原理。不建议使用+=进行拼接。因为中间创建对象产生了很多临时对象。降低效率。

  •  StringBuilderStringBuffffer
由于 String 的不可更改特性,为了方便字符串的修改, Java 中又提供 StringBuilder StringBuffffer 类。

上面的是在同一个对象中修改的。


下面代码创建了2个对象。一个是双引号引起来的字符串对象,new了一个String对象。

String str = new String("ab");

下面代码创建了6个对象。两个双引号引起来的2个对象,new了2个对象。字符串拼接会产生StringBuilder对象。拼接后的对象赋给str会调用toString,会创建一个string对象。 

String str = new String("a") + new String("b");

 字符串常量池的

1.双引号引起来的 统一放到常量池

2.如果常量池有 那么 就不再额外存储了

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

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

相关文章

在Linux中进行Jenkins-2.190的安装及使用

Jenkins-2.190安装在公网IP为x.x.x.x的服务器上 环境准备 第一步,下载server-jre-8u202-linux-x64.tar.gz安装包。 登录地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64.tar.gz…

黑马程序员---微服务笔记【实用篇】

微服务技术栈导学 微服务实现流程: 所有要学的技术: 分层次教学: 具体分层: 实用篇---第一天 一、认识微服务 单体架构 将业务所有功能集中在一个项目中开发,打成一个包部署 优点:架构简单、部署成本低 …

Linux系统编程(三)—— 文件编程(2)系统数据文件和信息

一、文件:/etc/passwd 这是 /etc/passswd 文件下的内容: (1)标准库函数:getpwuid( ) 和 getpwname( ) getpwuid( )函数是根据 uid 来找到系统用户的信息;getpwname( )函数是根据 name 来找到用户的信息&…

机器学习 day04(梯度下降算法,学习率,偏导数,执行过程示意图)

1. 梯度下降 我们可以用一种更系统的方法,来找到一组w,b,使成本函数的值最小。这个方法叫梯度下降算法,它可用于最小化任何函数,不仅仅包括线性回归的成本函数,也包括两个以上参数的其他成本函数在线性回…

C#:在datagridview中每行添加图片,点击图片删除整行

今天要讲的是关于datagridview中的操作。 首先现在winform界面中拉取一个datagridview控件,如下图所示: 然后需要在控件中添加如下图所示的三列数据: 其中第一列的数据类型选择如下图所示的DataGridViewImageColumn,另外两列的数…

基于matlab使用 CSI-RS 的 NR 下行链路发射端波束细化

一、前言 此示例演示了使用 5G 工具箱中的信道状态信息参考信号 (CSI-RS) 的下行链路发射端波束细化过程。该示例展示了如何在散射环境中向不同方向传输多个CSI-RS资源,以及如何根据参考信号接收功率(RSRP)测量结果选择…

PHP调用api接口,电商平台商品详情API接口(封装可高并发)

PHP传递参数 1、通过GET方式接收调用api接口传递的参数。 2、使用switch语句,当GET接收到不同的值时,调用不同的函数。 3、分别创建one(),two(),three()三个函数用于返回api接口调用后返回的数据。 4、在浏览器打开…

反弹shell原理与实现

一、什么是反弹shell? 反弹shell(Reverse Shell)是一种常用于网络攻击中的技术,其目的是让攻击者通过远程控制程序获取被攻击计算机的权限。反弹shell技术通常是通过在受害者计算机上运行一个程序(称为“后门”&#…

CF55D-Beautiful numbers (数位dp)

l c m ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) 2520 lcm(1,2,3,4,5,6,7,8,9)2520 lcm(1,2,3,4,5,6,7,8,9)2520 若 x x x 能被它自己的所有非零位的数字整除,即能被它们的最小公倍数整除, x ≡ 0 ( m o d l c m ( { d i g i t [ i ] } ) ) x \equiv 0…

十大常见行业 BI 可视化应用

智能商业指的是利用互联网、物联网、自动化、人工智能等新一代信息技术,在一定程度上对市场判断、发展决策、业务复盘、业务预测等商业行为实现智能化、自动化,整个过程基本不需要人类参与。 很多企业部署了商业智能BI系统,这是一种包含了数…

Node 02-fs模块

fs 模块 fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块 ,可以对计算机中的磁盘进行操作。 本章节会介绍如下几个操作: 文件写入文件读取文件移动与重命名文件删除文件夹操作查看资源状态 文件写入 文件写入…

ubuntu常用命令

查询进程: ps -ef 杀死进程 kill -9 killall -9 chrome killall chromedriver 杀死所有chrome ps ef 查看运行的任务 ps -ef | grep python top 查看运行任务详情 后台启动Python脚本 可以使用下面的命令来启动上面的脚本,让Python在后台运行。 nohup…

Matlab论文插图绘制模板第87期—模值赋色的三维箭头图

在之前的文章中,分享了Matlab三维箭头图的绘制模板: 进一步,如果我们想对每一个箭头赋上颜色,以更加直观地表示其模值的大小,该怎么操作呢? 那么,来看一下模值赋色的三维箭头图的绘制模板。 先…

设计模式 -- 多例模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

docker镜像制作: 构建UI镜像

前端构建docker镜像 事前准备 安装nodejs cd/usr/local/ wgethttps://npm.taobao.org/mirrors/node/v12.16.2/node-v12.16.2-linux-x64.tar.gz tar-zxvfnode-v12.16.2-linux-x64.tar.gz rm-rfnode-v12.16.2-linux-x64.tar.gz mvnode-v12.16.2-linux-x64node echoexportNODE_HO…

Matlab绘图案例,MATLAB画图大法,附详细代码

目录 1. 使用subplot创建多个子图 2. 绘制误差棒图 3. 绘制条形堆积图 4. 绘制堆积面积图 5. 绘制直方图并拟合曲线 6. 绘制等高线图 7. 绘制光滑的曲线 8. 绘制彩虹图 9. 绘制带有错误标记的散点图 10. 绘制水平堆积条形 11. 绘制饼图 12. 绘制极坐标图 13. 绘制…

怎样写好一本书

如果把“怎样写好一本书?”这个问题抛给ChatGPT,他的回答仍然像模像样。 虽然他回答的几点都没有错,但是,我个人认为,如果你想要写一本书并出版,那么首先应该考虑的是找一家出版社合作。毕竟,出…

关于HMC7044使用FXCO8晶振不能锁定的问题

查看FXCO8时钟输出波形: 查阅HMC7044手册,查看相关管教的电平要求: 可以看出共模要求有差异,不满足设计。 同时查看CVHD950的时钟输出电路。 可以看出共模1.6V,共模满足要求。不过这个幅度2.4V。也是满足设计要求的。 查看HMC7044关于输入电平标准(单端)的相关描…

HCIE-Cloud Computing LAB常见问题收集谱

第一题:FusionCompute 扩容CNA与对接共享存储 FusionCompute:关联存储资源失败 物理阵列里面太多没清理的了。然后去排查问题,存储地址也正确,管理接口也互联,IQN号也修改了,结果是启动器快满了 排查网…

记录机器学习时遇到的一些问题(纯新手

库 anaconda&spyder spyder运行报错ModuleNotFoundError: No module named ‘skleran’ 遂使用Anaconda Prompt 命令conda install sklearn 仍然报错,利用PYTHONPATH Manager增加路径(过程中搜索sklearn包地址) 仍然报错,发…