认识String类
文章目录
- String类
- 字符串的遍历
- 字符串的比较
- 字符串的替换
- 字符串的转换
- 字符串的切割
- 字符串的切片
- 字符串的查找
- 总结
String类
在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提
供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面向对象的思想,而字
符串应用又非常广泛,因此Java语言专门提供了String类。
String是一种不可变对象
在java.lang包里,不需要import手动导包,系统自动导好了
package java.lang;
字符串常量池:
字符串内容不可修改的原因
误区1:认为final修饰了String,被final修饰意味着不能被继承,并不是不能修改

误区2:以为final修饰了value

正确的答案是:
是因为value是由private修饰的,只能在本类中使用,所以不能修改value的值,只能创建新的字符串对象

字符串的创建
推荐使用直接赋值
new字符串对象需要在堆上开辟空间
public class demo1 {public static void main(String[] args) {String str="hello world";String str1=new String("hello world");String str2=str1;System.out.println(str+" "+str1);System.out.println(str2);}
}
内存图

由于字符串不可修改,使用方法都是创建了新的对象,所以使用了方法需要用变量接收
字符串的遍历
通过length()方法
和charAt()获取字符串中的元素
public class demo1 {public static void main(String[] args) {String s="abcdefg";for (int i = 0; i < s.length(); i++) {System.out.print(s.charAt(i)+" ");}
}

字符串的比较
==比较的是地址
通过.equals比较的是字符串的内容是否一致,返回的是boolean类型
public static void main(String[] args) {String a="haha";String b=new String("haha");System.out.println(a==b);System.out.println(a.equals(b));}
输出结果是

a的地址是在堆中的字符串池里的,而b是new出来的在堆里的另一块地址,地址不一样,==比较的是地址故输出false;而equal是比较内容是否相同
引用类型不能直接比较大小
字符串的替换
替换单个字符
public static void main(String[] args) {String s = "abcdefg";String replace = s.replace('a', 'v');System.out.println(replace);}
}


替换所有内容
public class demo1 {public static void main(String[] args) {String s1= "ayouayouayou";String s2 = s1.replaceAll("a", "love");System.out.println(s2);}
}

替换出现的第一个内容
public class demo1 {public static void main(String[] args) {String s1= "ayouayouayou";String s2 = s1.replaceFirst("a", "love");System.out.println(s2);}
}

字符串的转换
- 大小写的转换
public class demo1 {public static void main(String[] args) {String s1= "Sbfabfcsf";String s = s1.toLowerCase();System.out.println(s);String s2 = s1.toUpperCase();System.out.println(s2);}
}

- 字符串和数组的转换
public class demo1 {public static void main(String[] args) {String str="ahfkfIH";//字符串转数组char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.print(chars[i]+" ");}System.out.println();//数组转字符串String str2=new String(chars);System.out.println(str2);}
}
- 数值和字符串的转换
数值转字符串
各种类型都可以转换成字符串
valueOf是于Object类的,在调用时需要用类名去调用
public class demo1 {public static void main(String[] args) {String str=String.valueOf(113);System.out.println(str);}
}
字符串转数字
public class demo1 {public static void main(String[] args) {String str = "123";int i = Integer.parseInt(str);System.out.println(i);}
}
public class demo1 {public static void main(String[] args) {String str = "123.21";double i = Double.parseDouble(str);System.out.println(i);}
}


字符串的切割
一个是从起始位置截到末尾
一个是在指定范围内切割

示例
public static void main(String[] args) {String str="ahhfbg";String str1 = str.substring(2);System.out.println(str1);String str2 = str.substring(2, 4);System.out.println(str2);
}

字符串的切片

演示:
public class Test {public static void main(String[] args) {String str = "https://mp.csdn.net/mp_blog/manage/article?spm=1011.2266.3001.5448" ;String[] result = str.split("/") ;for(String s: result) {System.out.println(s);}}
}

public class Test {public static void main(String[] args) {String str = "https:/hhhh/mp.csdn.net/mp_blog/manage/article?spm=1011.2266.3001.5448" ;String[] result = str.split("/",3) ;for(String s: result) {System.out.println(s);}}
}

注意:
- 字符"|" ,“*”,“+“都得加上转义字符,前面加上”\\”.
- 而如果是"\“,那么就得写成”\\\\".
- 如果一个字符串中有多个分隔符,可以用"|"作为连字符.
字符串的查找

重点掌握charAt()


如何处理异常我们下篇博客介绍!
方法演示:
public class Test {public static void main(String[] args) {String s="abfsasrabcdef";System.out.println(s.charAt(5));//sSystem.out.println(s.indexOf('a'));//0System.out.println(s.indexOf('a',3));//4System.out.println(s.indexOf("sa"));//3System.out.println(s.indexOf("sa",4));//-1System.out.println(s.lastIndexOf('a'));//7System.out.println(s.lastIndexOf('a',5));//4System.out.println(s.lastIndexOf("ab"));//7System.out.println(s.lastIndexOf("b",8));//8}
}
总结
相信你看完已经对String类有了一定的理解,继续学习下去吧!

相关文章:
认识String类
文章目录 String类字符串的遍历字符串的比较字符串的替换字符串的转换字符串的切割字符串的切片字符串的查找 总结 String类 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提 供的字符串系列函数完…...
计算机图形学入门23:蒙特卡洛路径追踪
1.前言 前面几篇文章介绍了Whitted-style光线追踪,还介绍了基于物理渲染的基础知识,包括辐射度量学、BRDF以及渲染方程,但并没有给出解渲染方程的方法,或者说如何通过该渲染方程计算出屏幕上每一个坐标的像素值。 Whitted-style光…...
探索 TensorFlow 模型的秘密:TensorBoard 详解与实战
简介 TensorBoard 是 TensorFlow 提供的可视化工具,帮助开发者监控和调试机器学习模型。它提供了多种功能,包括查看损失和精度曲线、可视化计算图、检查数据分布等。下面将介绍如何使用 TensorBoard。 1. 安装 TensorBoard 如果尚未安装 TensorBoard&…...
yolov8obb角度预测原理解析
预测头 ultralytics/nn/modules/head.py class OBB(Detect):"""YOLOv8 OBB detection head for detection with rotation models."""def __init__(self, nc80, ne1, ch()):"""Initialize OBB with number of classes nc and la…...
CICD之Git版本管理及基本应用
CICD:持续集成,持续交付--让对应的资料,对应的项目流程更加规范--提高效率 CICD 有很多的工具 GIT就是其中之一 1.版本控制概念与环境搭建 GIT的概念: Git是一款分布式源代码管理工具(版本控制工具) ,一个协同的工具。 Git得其数据更像是一系列微型文件系统的快照。使用Git&am…...
Python作用域及其应用
Python的作用域规则决定了变量在代码中的可见性和访问性。全局作用域中定义的变量可以在整个程序中访问,而局部作用域中定义的变量则只能在其被创建的函数或代码块中访问。 全局作用域与局部作用域 全局作用域中的变量通常在程序的顶层定义,可以被整个…...
谷歌上架,应用被Google play下架之后,活跃用户会暴跌?这是为什么?
在Google play上架应用,开发者们最不想到看到就是应用被下架了。这意味着所有的努力都将付诸东流,因为有的应用一但被下架,活跃用户也随之嗖嗖地往下掉,这事儿可真不是闹着玩的,严重影响了收益! 为什么你的…...
web安全渗透测试十大常规项(一):web渗透测试之Fastjson反序列化
渗透测试之Java反序列化 1. Fastjson反序列化1.1 FastJson反序列化链知识点1.2 FastJson反序列化链分析1.3.1 FastJson 1.2.24 利用链分析1.3.2 FastJson 1.2.25-1.2.47 CC链分析1.3.2.1、开启autoTypeSupport:1.2.25-1.2.411.3.2.2 fastjson-1.2.42 版本绕过1.3.2.3 fastjson…...
Unity 3D软件下载安装;Unity 3D游戏制作软件资源包获取!
Unity3D,它凭借强大的功能和灵活的特性,在游戏开发和互动内容创作领域发挥着举足轻重的作用。 作为一款顶尖的游戏引擎,Unity3D内置了先进的物理引擎——PhysX。这一物理引擎堪称业界翘楚,能够为开发者提供全方位、高精度的物理模…...
PyTorch之nn.Module与nn.functional用法区别
文章目录 1. nn.Module2. nn.functional2.1 基本用法2.2 常用函数 3. nn.Module 与 nn.functional3.1 主要区别3.2 具体样例:nn.ReLU() 与 F.relu() 参考资料 1. nn.Module 在PyTorch中,nn.Module 类扮演着核心角色,它是构建任何自定义神经网…...
2024.06.24 校招 实习 内推 面经
绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、校招 | 昂瑞微2025届校园招聘正式启动 校招 | 昂瑞微2025届校园招聘正式启动 2、实习 | 东风公司研发总院暑期实习生火爆招募中 实习 | 东风公司研发总院暑期实习生火爆招募中 3、实习…...
【C++】using namespace std 到底什么意思
📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文作为 JohnKi 的学习笔记,引用了部分大佬的案例 📢未来很长&a…...
基于ESP32 IDF的WebServer实现以及OTA固件升级实现记录(三)
经过前面两篇的前序铺垫,对webserver以及restful api架构有了大体了解后本篇描述下最终的ota实现的代码以及调试中遇到的诡异bug。 eps32的实际ota实现过程其实esp32官方都已经基本实现好了,我们要做到无非就是把要升级的固件搬运到对应ota flash分区里面…...
116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台
一、板卡概述 本板卡是Xilinx公司芯片V5系列芯片设计信号处理板卡。由一片Xilinx公司的XC5VLX110T-1FF1136 / XC5VSX95T-1FF1136 / XC5VFX70T-1FF1136芯片组成。FPGA接1片DDR2内存条 2GB,32MB Nor flash存储器,用于存储程序。外扩 SATA、PCI、PCI expres…...
Android - Json/Gson
Json数据解析 json对象:花括号开头和结尾,中间是键值对形式————”属性”:属性值”” json数组:中括号里放置 json 数组,里面是多个json对象或者数字等 JSONObject 利用 JSONObject 解析 1.创建 JSONObject 对象,传…...
盲信号处理的发展现状
盲源分离技术最早在上个世纪中期提出,在1991年Herault和Jutten提出基于反馈神经网络的盲源分离方法,但该方法缺乏理论基础,后来Tong和Liu分析了盲源分离问题的可辨识性和不确定性,Cardoso于1993年提出了基于高阶统计的联合对角化盲…...
二轴机器人装箱机:重塑物流效率,精准灵活,引领未来装箱新潮流
在现代化物流领域,高效、精准与灵活性无疑是各大企业追求的核心目标。而在这个日益追求自动化的时代,二轴机器人装箱机凭借其较佳的性能和出色的表现,正逐渐成为装箱作业的得力助手,引领着未来装箱新潮流。 一、高效:重…...
使用python做飞机大战
代码地址: 点击跳转...
Python面向对象编程:派生
本套课在线学习视频(网盘地址,保存到网盘即可免费观看): https://pan.quark.cn/s/69d1cc25d4ba 面向对象编程(OOP)是一种编程范式,它通过将数据和操作数据的方法封装在一起࿰…...
华为仓颉编程语言
目录 一、引言 二、仓颉编程语言概述 三、技术特征 四、应用场景 五、社区支持 六、结论与展望 一、引言 随着信息技术的快速发展,编程语言作为软件开发的核心工具,其重要性日益凸显。近年来,华为公司投入大量研发资源,成功…...
GTE模型与Visual Studio智能编程插件的集成
GTE模型与Visual Studio智能编程插件的集成 1. 引言 作为一名每天要写大量代码的程序员,我经常遇到这样的情况:突然想不起来某个API的具体用法,或者需要查找某个功能的实现示例。传统的做法是打开浏览器,在各种文档和论坛中搜索…...
从理论到实践:在快马平台构建基于openclaw的物流分拣仿真系统
最近在研究物流自动化分拣系统时,发现openclaw机械爪控制在实际应用中存在不少痛点。传统开发流程需要从零搭建仿真环境、编写控制逻辑、调试物理交互,整个过程耗时耗力。于是尝试用InsCode(快马)平台快速构建了一个物流分拣仿真系统,效果出乎…...
一篇搞定2026年律所管理系统选购,避坑技巧+优质品牌全解析
据智研咨询2026年发布的《中国律所管理软件行业发展报告》显示,国内律所对管理系统的需求年增长率达28%,但近70%的律所表示选型后存在功能冗余、操作复杂、适配性差等问题,不仅未能提升效率,反而增加了办公成本。作为深耕律所管理…...
cutlass代码架构分析
CUTLASS 代码架构分析 本文档基于 cutlass代码进行梳理,快速理解 CUTLASS 4.x 的模块边界与调用链路。 1. 总体架构 CUTLASS 本质上是一个 header-only 的 CUDA C++ 模板库,外围配套了可选构建目标: include/:核心库(cutlass + cute) tools/:库实例化、性能测试与通用…...
Nacos集群启动时,那个神秘的cluster.conf文件到底是怎么被找到和监控的?
Nacos集群启动时cluster.conf文件的寻址与监控机制深度解析 从一次集群配置失效事件说起 上周深夜,我们的分布式系统监控平台突然发出警报——Nacos集群中的三个节点相继失联。紧急排查时发现,明明已经更新了cluster.conf文件新增了两个节点,…...
ViGEmBus如何解决Windows游戏控制器兼容性难题?
ViGEmBus如何解决Windows游戏控制器兼容性难题? 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款专业的Windows内核模式驱动程序&a…...
大一大二最容易忽视的一张“证书”,却悄悄决定了很多人的未来
很多大学生到了大三才突然发现一件事:有些机会,原来早在大一大二就已经埋好了门槛。比如——英语四六级。保研、考研复试、国企网申、研究生免修英语、甚至一些实习岗位筛选,很多时候都会看到同一行字:CET-4 / CET-6 成绩这张证书…...
3步告别微信单向好友:WechatRealFriends帮你轻松识别谁删了你
3步告别微信单向好友:WechatRealFriends帮你轻松识别谁删了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFrie…...
Systemd配置文件修改后不生效?试试这个命令比重启更高效
Systemd配置热更新实战:如何用daemon-reexec替代服务重启 在Linux系统管理中,systemd作为现代init系统的代表,其配置调整是管理员日常工作的核心部分。但许多工程师在修改/etc/systemd/system.conf这类全局配置后,往往陷入两难&am…...
Windows Defender移除工具终极指南:如何彻底禁用Windows Defender提升系统性能
Windows Defender移除工具终极指南:如何彻底禁用Windows Defender提升系统性能 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://git…...
