第六章 6.1 字符串常用方法

字符串初始原理

JVM在启动过程中,有一个类加载的过程,会进行一系列的初始化(包括类的加载,静态变量的初始化)会初始化字符串常量池中。JVM一启动,整个字符串直接全部扫描到字符串常量池中。

源码:

字符串一旦创建是不可变的。

final说明String类不能被继承了

看private final byte[] value;

将"abc"字符串传入,byte数组存储的是Ascll码,97,98,99。数组长度是3,确定的,不可变的。finall修饰的变量指的是一旦指定一个对象,不能指向别的对象,所以说"abc"一旦赋值给vaule,就变不了,只能指向"abc"。

原因总结:String类的底层源码中定义字符串常量,用private final修饰的数组,所以内容和长度一旦赋值均不可变。

final知识点

final 变量:一旦赋值后不可更改。 -

final 方法:不能被子类重写。

final 类:不能被继承。

comparable接口

String实现comparable接口,重写了compareTo()方法,表示String类是一个可以比较的类。

参数:该方法接收一个与当前对象同类型的对象作为参数。

返回值:返回负整数:当前对象小于指定对象。

返回零:当前对象等于指定对象。

返回正整数:当前对象大于指定对象。

字符串的拼接

String类常用的构造方法


①char数组转换为字符串

②char数组部分转换成字符串

③byte数组转换成字符串,

字节码取值范围:-128~127

小知识点:原码,反码,补码

正数的原码反码补码都是相同的:例如127的三种码都是01111111;

④字节码数组部分转换成字符串

⑤有的时候我们不知道字符集的编码方式,所以用到⑤的构造方法。如果知道编码方式,采用⑥

调用Charset.defaultCharset()方法动态获取平台的编码方式。

⑥可以参考String乱码的截图

⑦不建议使用的

String乱码

乱码的本质:在进行编码和解码没有使用同一个字符编码方式。

编码字符集设定的是UTF-8,解码设定的是JDK,互补相同,所以用到的规则不同,导致乱码。

字符串常用方法

①返回索引处的值

//输出结果为:"点"。

②获取字符串长度

③判断字符串是不是空字符串。

④、⑤判断字符串是否相等。

⑥判断字符串是否包含某个字符串

⑦、⑧判断是否开头结尾

⑨、⑩相对于数组来说,字符串实现了comparable接口。

11~12

输出的结果是:9

从下标10开始找java出现的下标

13~14

和11,12同理

还有其他方法 ,看API帮助文档

正则表达式

常见符号

String正则相关方法

字符串常见面试题

相关推荐
MATLAB代码顾问2 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
wuminyu3 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
万粉变现经纪人3 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒3 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼3 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
callJJ4 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
小郑加油4 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦4 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp5 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy5 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言