认识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)是一种编程范式,它通过将数据和操作数据的方法封装在一起࿰…...
 
华为仓颉编程语言
目录 一、引言 二、仓颉编程语言概述 三、技术特征 四、应用场景 五、社区支持 六、结论与展望 一、引言 随着信息技术的快速发展,编程语言作为软件开发的核心工具,其重要性日益凸显。近年来,华为公司投入大量研发资源,成功…...
 
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
 
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
 
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
 
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
 
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
 
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
