String类相关

String类的常用方法

在所有高级语言中,字符串实际是使用字符数组进行存储的。

字符串对象的产生

在这里插入图片描述

字符串的对象比较

1、字符串相等的比较:使用equals方法,按照两个不同字符串对象内部的一个个字符进行比较,区分大小写。不区分大小写的比较使用equalsIgnoreCase方法进行比较
在这里插入图片描述
2、字符串对象大小的比较
String类实现了Comparable接口,调用comparaTo方法可以实现字符串大小的比较。
比较时,compareTo方法的返回值:
a、当两个字符串长度相同时,找到第一个不相同的字符,返回其ASCII差值。
在这里插入图片描述
b、两个字符串长度不同时,若前K个字符都是相等的(k表示最短长度),返回两个字符串长度的差值。
在这里插入图片描述
c、当两个字符串对象完全相同,该方法返回值为0。
另外一个和comparaTo方法用法一致的方法,但不区分大小写:
在这里插入图片描述

字符串的转化

1、关于数值和字符串的转化
a、将其他数值转化为字符串对象,调用字符串的静态方法valuOf方法。
在这里插入图片描述
b、将字符串对象还原为数值,调用数值包装类提供的parseXXX方法。当字符串中包含了非数字内容,会转换出错。
在这里插入图片描述

字符串的查找

方法功能
char charAt( int index )返回index位置的字符,若index为负或越界,抛出越界异常
int indexOf(int ch)返回ch第一此出现的位置,没有返回-1
int indexOf(int ch,int fromIndex)从fromIndex位置开始找ch第一次出现的位置,没有返回-1
int indexOf(String str)返回str第一次出现的位置,没有返回-1
int indexOf(String str,int fromIndex)从fromIndex位置开始找str第一次出现的位置,没有返回-1
int lastIndexOf(int ch)从后往前找,返回ch第一次出现的位置,没有返回-1
int lastIndexOf(int ch,int fromIndex)从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1
int lastIndexOf(String str)从后往前找,返回str第一次出现的位置,没有返回-1
int lastIndexOf(String str,int fromIndex)从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1
boolean contains(字符/字符串)查询当前字符串对象中是否包含指定内容,返回true,否则返回false

如何判断一个字符串是否由纯数字组成?
在这里插入图片描述

字符串的替换

指定一个新的字符串替换已有的子串

方法功能
String replaceAll(被取代的子串,替换后的子串)全部替换
String replaceFirst(被取代的子串,替换后的子串)替换从前到后的首个字串

在这里插入图片描述

字符串的拆分

将一个完整的字符串对象,按照指定的分隔符拆分为字符串数组。

方法功能
String[] split(String regex)将字符串全部拆分
String[] split(String regex,int limit)将字符串以指定的格式,拆分为limit组

在这里插入图片描述
某些特殊分隔符的拆分问题:
根据电脑ip地址分析归属地,就需要将ip进行拆分:
在这里插入图片描述
在拆分时某些特殊分隔符若在程序中由特殊含义,拆分时需要进行转义处理:
在这里插入图片描述
多次拆封问题:
在这里插入图片描述

字符串的截取

从一个完整的字符串中截取出一些内容。

方法功能
String substring(int beginIndex)从指定索引截取到结尾
String substring(int beginIndex,int endIndex)截取部分内容

JDK表示区间的函数一般都是左闭右开,substring函数中包含开始索引的字符,不包含结束索引的字符。
在这里插入图片描述

字符串的补充方法

方法功能
String trim()去掉字符串的左右空格,保留中间空格
String toUpperCase()字符串转大写(只能是英文字母)
String toLowerCase()字符串转小写(只能是英文字母)

接收一个英文字符串,将英文字符串的首字母大写:
在这里插入图片描述

字符串常量池

1、关于直接赋值法和new的方式产生对象的区别
当字符串的对象采用赋值法创建时,JVM会维护一个常量池,当字符串对象第一次产生时,就会产生该字符串对象,置入常量池中,当使用赋值法再次要产生该对象,若常量池中已经包含了改值的对象,直接复用常量池中的对象,并不会产生新的字符串对象。使用直接赋值法产生字符串引用,可以更加高效的利用空间;new方式产生,就得在堆上开辟新的空间
在这里插入图片描述
2、关于intern方法
在这里插入图片描述
调用该方法,会将当前的字符串对象尝试置入常量池中:
a、若常量池中已经包含了当前对象的内容,不会将当前对象置入常量池,返回常量池中原有地址的对象;
b、若常量池中没有包含当前对象的内容,就将当前对象置入常量池中,返回的还是当前对象的地址。
情况1:
在这里插入图片描述
情况2:
在这里插入图片描述
情况3:
在这里插入图片描述
情况4:
在这里插入图片描述
总结:对象内容是否相等使用equals,不会有异议!!!!

字符串不可变性

1、定义:String对象一旦产生,字符串对象中保存的值不可改变。
在这里插入图片描述
上述代码中,一直改变的是字符串str的引用,不断指向了新的字符串对象。
2、String对象不可变的本质
String类的源码:
在这里插入图片描述
String被final修饰:相当于该类没有子类,JDK关闭了该类的拓展,保证所有使用者拿到的都是相同的类和方法。对于String类,没有多态。
value被final修饰:说明该引用一旦赋值,只能指向对应的字符数组对象(只有final不够,此时数组对象的内容还是可变的)。
value被private修饰:value被private封装,则整个数组对字符串类中完全隐藏,同时String类没有对外提供getter和setter方法,无法修改其内容,这才是不可变的本质
在这里插入图片描述
在这里插入图片描述
3、String提供的字符串修改方法,其实是产生了新的字符串对象,并不是在原有基础上修改!!
以截取subString,replace,toUpperCase为例,看似都更改了字符串内容,本质上都产生了新的字符串对象!!
在这里插入图片描述
subString源码的返回值:
在这里插入图片描述
4、经典示例
在这里插入图片描述

StringBuffer类和StringBuilder类

由于字符串的不可变性,因此当需要频繁的修改字符串内容时,我们就需要用到JDK提供的另外两个类:StringBuffer和StringBuilder,这两个类的使用完全一致,都是修改字符串内容时用到的类。且这两个类和String类是完全独立的类,完全不是一个类。

StringBuffer

StringBuffer是线程安全的类,性能较差,一般用在多线程并发修改内容时。

StringBuilder和String的相互转换

StringBuilder类是线程不安全的类,性能较高,能满足大部分的场景使用。
1、将String对象转换成StringBuilder对象。
a、通过StringBuilder的构造方法;
b、通过StringBuilder类的成员方法append(str)。
在这里插入图片描述

2、将StringBuilder对象转换成String对象。
在这里插入图片描述

StringBuilder类的常用方法

1、

方法功能
StringBuilder append(String str)默认在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuilder的变量
StringBuilder insert(int offset,String str)在offset位置插入:八种基本类型&String类型&Object类型数据

在这里插入图片描述
2、

方法功能
StringBuilder deleteCharAt(int index)删除index位置的字符
StringBuilder delete(int start ,int end)删除[start,end)区间内的字符

在这里插入图片描述
3、

方法功能
void setCharAt(int index,char ch)将index位置的字符设置为ch
StringBuilder replace(int start,int end,String str)将[start,end) 位置的字符替换为str

在这里插入图片描述
4、

方法功能
char charAt(int index)获取index位置的字符
int indexOf(String str)返回str第一次出现的位置
int indexOf(String str,int fromIndex)从fromIndex位置开始找str第一次出现的位置
int lastIndexOf(String str)返回最后一次出现str的位置
int lastIndexOf(String str,int fromIndex)从fromIndex位置开始找str最后一次出现的位置

5、转置

方法功能
StringBuilder reverse()将当前字符串逆序处理

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值