String类(Java)

String类
Java中如果针对引用类型使用 == ,此时是比较两个引用的地址是否相等。Java的字符串常量会被保存到“字符串常量池”中,此时字符串常量只需要保存一份即可。
在这里插入图片描述
字符串常量池
常量:和变量相对。 “hello”这就是常量(字符串的字面值常量)
池:计算机中一个非常重要的术语。
池的目的就是为了降低开销,提高效率。本质是吧频繁使用的东西提前保存好,以备用到的时候,随时能用。

Java的String是不可变对象(对象本身不能修改)
final修饰的是常量
final修饰的是一个引用类型的话,表示的是该引用的指向(引用中存的地址不能改)

1.String 的创建
1)String str = “hello”;
2)String str = new String(“hello”);
3)通过 char[] 或者 byte[] 的方式来构造字符串
2.String的比较(相等)
== 比较对象的身份(比较两个引用中保存的地址是否相同/比较两个引用是否指向同一个对象)
equals 方法比较两个字符串的内容。

3.字符串常量池
4.字符串是不可变对象
String内部持有的char[] value 数组的内容不能在类外不发生改变,封装的体现、
a)方便的放到池中
b)hashCode 也不可变
c)线程安全更有保证
5.字符数组、字节数组、字符串之间的相互转换
字符数组/字节数组 => String 使用 String 的构造方法即可
String => 字节数组 toCharArray (得到了一个新的字符数组)
String => 字节数组 getBytes (得到了一个新的字节数组)
6.使用反射机制来修改String 的内容
(非常规手段)

字符串常见操作
1、字符串的比较
a)比较相等 == / equals
b)比较大小
c)不区分大小写的比较
字符串大小判定规则:
先比较首个字符的大小(看字符的ASCII的值的大小)
如果首个字符能分出大小关系,两个字符的大小就确定了
如果首个字符不能分出大小,继续比较下一个字符。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符串包含关系:
String a = “hello world”;
String b = “world”;
b是a的字符串子串/子字符串,a就包含b
. contains()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

. indexOf()
返回来子字符串起始位置的下标,如果存在多个子字符串,返回最左边的结果的下标(从左往右查找的,找到第一个结果就直接返回,如果没找到返回 -1 )
在这里插入图片描述
在这里插入图片描述

使用fromIndex result+1 会返回下一个子字符串的下标

在这里插入图片描述
在这里插入图片描述

. lastIndexOf() 从后往前查,返回下标

在这里插入图片描述
在这里插入图片描述

. startsWith() / .endsWith() 判定以xxx开头/结尾
典型用法:
1、判断某个链接的会议类型,会使用startsWith
2、判断某个文件的类型,会使用endsWith判断扩展名
在这里插入图片描述
在这里插入图片描述

字符串替换
由于String是不可变对象,针对字符串的替换操作,并没有修改字符串本身,而是形成了一个新的字符串。
. replaceAll() 替换所有的
在这里插入图片描述
在这里插入图片描述

.replaceFirst 替换第一个
在这里插入图片描述
在这里插入图片描述

String . regex, 正则表达式:使用一些特殊的字符,来描述某些字符串的筛选标准,例如:是否包含某些字符,以xxx开头,以xxx 结尾,xxx重复出现几次…
在这里插入图片描述

字符串拆分: . split()
按照一定的分隔符,把字符串分成几个部分,把这些部分放到一个数组里
在这里插入图片描述
在这里插入图片描述

合并
Java语言中就直接使用 + 拼接进行合并

字符串截取
.substring()
在这里插入图片描述
在这里插入图片描述
.trim()操作:干掉空白符
空白符:空格、换行、回车、制表符、翻页符、垂直制表符…
在这里插入图片描述
在这里插入图片描述

转成大小写
.toUpperCase()
.toLowerCase()
在这里插入图片描述
在这里插入图片描述

.isEmpty() 判断是否为空字符串
在这里插入图片描述
在这里插入图片描述

native关键字:本地方法,这个方法不是用java实现的(而是用JDK语言实现的)

调用append就是直接把参数,拼接到原来内存的末尾了
如果append的时候拼接的内容太多,超出这个内存的范围咋办?
StringBuilder会自动扩容,虽然扩容操作也比较低效,但好在触发的频率不高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值