个人八股之string字符串

前瞻环节

大家好,我是程序员无尽冬 ,欢迎大家来到我的专栏。本篇我们将给大家讲解java的string字符串的相关知识 同时也会将它整理为我的个人八股分享给大家 希望大家可以喜欢。

首先我们先了解一下string的基本知识

一 String 类型是什么

String类型其实就是定义字符串 的一种类型,它可以直接定义我们想要表示的字符串

String是不可变类型

二 String不可变的原因

1.String是final 类型的类,value也是final类型的数组,但这不是String不可变的根本原因,String不可变是因为value是private,且并没有提供对外的get和set方法

2.底层char\[\]数组 有final修饰,意味着这个数组不能扩容等,来达到存更多的字符,final修饰char类型数组,保证数组一旦被赋值 不能在重新赋值,修改char类型数组后,地址不能改变,内容可变,但是没有具体的方法去修改内容

3.char\[\]数组是私有的,我们无法直接操作这个char\[\]数组,而且String没有提供这样的方法,来修改char\[\]数组的元素的值。

三 获取 string 对象的方式

获取字符串对象的两种方式:

直接赋值:代码简单+串池复用

new:每次都会创建一个新的字符串对象

四 string的常用方法

获取信息

length() - 获取字符串长度

charAt(int index) - 获取指定位置的字符

substring(int start) / substring(int start, int end) - 截取字符串

indexOf(String str) - 查找字符串首次出现位置

转换

toUpperCase() / toLowerCase() - 大小写转换

toCharArray() - 转字符数组

trim() - 去除首尾空格

replace(old, new) - 替换

判断

equals(String str) - 比较内容是否相等

equalsIgnoreCase(String str) - 忽略大小写比较

contains(CharSequence s) - 是否包含指定内容

startsWith(String prefix) / endsWith(String suffix) - 前缀/后缀判断

分割

split(String regex) - 按指定分隔符拆分数组

其他

isEmpty() - 判断是否为空

concat(String str) - 拼接字符串

valueOf() - 其他类型转字符串

代码示例

五 String StringBuffer, StringBuilder的区别

String、StringBuffer和StringBuilder都是用于处理字符串的类 ,它们之间的区别如下:

String:String类是不可变的,也就是说一旦创建了一个String对象,它的值就不能被修改。每次对String对象进行操作(拼接、替换等),都会创建一个新的String对象,这会产生大量的临时对象,影响性能。

StringBuffer:StringBuffer是可变的,可以对其进行修改操作。在对字符串进行频繁操作时,使用StringBuffer比直接使用String效率更高,因为StringBuffer是在原有对象上进行修改,而不会创建新的对象。

StringBuilder:StringBuilder与StringBuffer功能相似,也是可变的,但在多线程环境下不保证线程安全。如果没有多线程操作,建议使用StringBuilder,因为它比StringBuffer略微更快。

总结环节

本期我们学习了string字符串的基本知识并融合为自己的八股

我是程序员无尽冬 感谢你的观看 如果对你有帮助 请一键三连支持一下

最后分享一首歌给大家 法老的 会魔法的老人 https://music.163.com/song?id=1988564487&uct2=U2FsdGVkX1/LiOMNTOPEVZGmeOed5pxmV5RyNM4qVmA=

相关推荐
warpdrivelabs13 分钟前
Codex 开源 harness 全面了解
开发语言·人工智能
2401_8949155321 分钟前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
Java牛马4 小时前
SpringBoot Starter 依赖相关总结
java·spring·springboot·starter·自动装配·依赖
丰锋ff4 小时前
基于 Qt 的智能门禁系统(二)
开发语言·qt
吴声子夜歌5 小时前
Java面试——Spring Cloud原理及应用(二)
java·spring cloud·面试
fpcc5 小时前
跟我学C++中级篇——编译期的条件选择
开发语言·c++
SomeB1oody5 小时前
【RustyML入门】6.3. 并行归约
开发语言·后端·机器学习·rust·教程
东小西5 小时前
【SAA实战】第 1 篇:ReactAgent 入门——先撸个"会调工具的助手"跑起来
java·人工智能·spring
Profile排查笔记6 小时前
指纹浏览器哪个好?从 Profile、代理、权限和自动化能力判断是否适合
前端·人工智能·后端·自动化
用户938515635076 小时前
用 AI 结对编程从 0 搭一个"单词后台管理系统":Next.js + Supabase + Drizzle + shadcn/ui 全记录
后端·postgresql·next.js