当前位置: 首页 > news >正文

Java字符串

一.API

应用程序接口,简单来说API就是别人已经写好的东西,我们不用自己再写一遍,直接使用即可

Java API:指JDK中提供的各种功能的java类,这些类将底层的实现封装起来,不用考虑这些类是怎么实现的,直接学习这些类的使用即可

二.String

概述:java.lang.String类代表字符串,Java程序中的所有字符串文字都为此类的对象

注意:字符串的内容不会发生改变,它的对象在创建后不能被更改

String对象的创建:

1.直接赋值

String name = "";

2.new方法创建

构造方法说明
public String()创建空白字符串,不含任何内容
public String(String original)根据传入的字符串,创建字符串对象
public String(char[] chs)根据字符数组,创建字符串对象
public String(byte[] chs)根据字节数组,创建字符串对象

字符数组的使用场景:需要修改字符串内容

字节数组的使用场景:以后在网络中传输的数据都是字节信息,一般要把字节信息进行转换,转换成字符串,此时用到此构造

Java的常用方法(比较):

==号比较的到底是什么:基本数据类型比较数据值;引用数据类型比较地址值

字符串的比较方法:

构造方法说明
boolean equals(要比较的字符串)完全一样的结果才是true,否则为false
boolean equalsIgnoreCase(要比较的字符串)忽略大小写的比较

字符串的遍历:

构造方法说明
public char charAt(int index)根据索引返回字符
public int length()返回此字符串的长度

字符串的截取:

构造方法说明
String substring(int beginIndex,int endIndex)包头不包尾,包左不包右;只有返回值才是截取的小串
String substring(int beginIndex)截取到末尾

字符串的替换:

构造方法说明
String replace(旧值,新值)只有返回值才是替换后的结果

三.StringBuilder

概述:StringBuilder可以看作是一个容器,创建后里面的内容是可变的

作用:提高字符串的操作效率

StringBuilder的构造方法:

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串的内容,创建可变字符串对象

StringBuilder的常用方法:

方法名说明
public StringBuilder append(任意类型)添加数据并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString()可以实现吧StringBuilder转换为String

链式编程:在调用一个方法时,不需要用变量接收结果,可以继续调用其他的方法

四.StringJoiner

概述:StringJoiner和StringBuilder一样,也可以看作是一个容器,创建后里面的内容是可变的

作用:提高字符串的操作效率,而且代码的编写十分简洁

JDK8之后出现

StringJoiner的构造方法:

方法名说明
public StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号

StringJoiner的成员方法:

方法名说明
public StringJoiner add(添加的内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接后的结果)

五.字符串原理

1.字符串存储的内存原理:

直接赋值会服用字符串常量池中的

new出来的不会复用,而是开辟一个新的空间

2.==号比较的到底是什么:

基本数据类型比较数据值

引用数据类型比较地址值

3.字符串拼接的底层原理:

如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果, 会复用串池中的字符串

如果有变量参与,会创建新的字符串,浪费内存

4.StringBuilder提高效率原理:

所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

5.StringBuilder源码分析:

默认创建一个长度为16的字节数组

添加的内容长度小于16,直接存储

添加的内容大于16会扩容(原来容量*2+2)

如果扩容之后还不够,已实际长度为准

http://www.jsqmd.com/news/1178316/

相关文章:

  • 工业负载控制方案:TPD2015FN与STM32F303K8实战
  • AI Agent开发实战:从ReAct范式到生产级部署的完整指南
  • Chat2DB企业级数据库管理工具战略评估与选型决策指南:降低40%运维成本、提升60%团队协作效率的完整框架
  • ROS tf监听器实战:C++实现健壮坐标变换查询
  • Unity UI Toolkit实战:从零构建可交互计数器,掌握数据绑定与响应式UI
  • SpringMVC入门指南:从零掌握核心要点
  • AI微调实战:30分钟用LoRA生成像素风游戏UI图标
  • GeoJSON 1.6.0 与 ECharts 地图数据对比:2种格式、3个关键差异解析
  • Claude Code构建主动型AI开发工作流:从代码探索到自动化CI/CD
  • Codex API实战:3亿token打造技术IP分身的经验与避坑指南
  • UE5内置VR模拟器开发指南:零硬件成本快速验证VR交互原型
  • Day21 | GRPO 实战——从零跑通一个能解数学题的 reasoning 模型
  • 录播姬深度解析:如何构建企业级直播录制解决方案?
  • 支付宝小程序 my.startAPVerify 实战:3步集成实人认证,处理 5 种回调状态
  • 终极Illustrator批量替换神器:ReplaceItems.jsx完全指南,让设计效率提升20倍!
  • 2026最新枣庄本地漏水检测公司本地精选权威推荐:正规防水补漏公司优选口碑TOP5:卫生间/厨房/阳台/飘窗/地下室渗漏水维修师傅上门 - 即刻修防水
  • Python构建稳定公版书获取管道:直连Project Gutenberg数据源
  • Vue 3 + Axios 处理二进制音频流:3种方案对比与性能实测
  • ArduSub故障排除:水下机器人闭环控制系统诊断指南
  • 亨得利官方名表服务中心|完整网点地址及售后热线权威信息通知(2026年7月更新) - 亨得利官方博客
  • Pandas多维聚合实战:银行风控中的高效业务分析
  • OpenAI 的“安全放行”背后:政府到底在审什么?
  • Linux mv命令详解、mv命令文件找回
  • AI时代程序员的核心护城河:计算本质理解力
  • 高精度模拟信号采集方案:ADS127L11与STM32F042C6实践
  • C++17编译时字符串加密:利用constexpr实现安全高效的字符串保护
  • STM32F407VGT6与MAX77654的工业级电源管理方案
  • ADC 模块 PCB 设计
  • 影刀RPA 发票报销自动化:识别校验与审批流
  • 图片转AI提示词工具:从视觉感知到精准控制的技术解析