oopDay6-String底层方法

深入理解Java String方法
这篇博客详细探讨了Java中的String类,重点介绍了其不可变性、底层实现以及常用方法,如length()、charAt()、contains()、substring()、indexOf()、lastIndexOf()等。此外,还提到了字符串的序列化、内容比较以及转换方法如toLowerCase()和toUpperCase()。通过实例展示了如何进行字符串的拆分、去除收尾空格和替换操作。

1.String

String 字符串

​ 引用数据类型(并不属于八大基本数据类型)

​ String是用final修饰的—>即没有子类,不能被继承

1.1原码:
1.1.1 String

Serializable: 序列化接口,

Comparable: Comparable接口(代表: 是否能比较),

CharSequence: CharSequence接口(代表: 字符序列)

在这里插入图片描述

1.value[] 是char类型的数组,char是字符,字符串成串,即字符串,在此数组中storage(存储)

在这里插入图片描述

2.hash 缓存当前字符串的哈希码,默认值是0

在这里插入图片描述

3.serialVersionUID = 是用来序列化的

在这里插入图片描述

1.1.2 内容比较

String字符串中的内容比较

public boolean equals(Object anObject) {
    if (this == anObject) {				//比较地址是否一样
        return true;
    }
 //instanceof实例运算符(判断当前的传入是否是字符串类型,比较其内容,char[]这个数组每个对应的位置是否一样)
    if (anObject instanceof String) {	
        String anotherString = (String)anObject;
        int n = value.length;					//给n赋字符数组的长度
        if (n == anotherString.value.length) {	//判断长度是否相等
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {					//循环判断数组中的每个值
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
1.2 总结:

即 字符串是不可变的 底层是字符数组

1.3 String的方法

1.length()

2.charAt(索引位置)

3.contains(“子串”);判断是否包含–输出–>(true,flase)

在这里插入图片描述

字符串截取

4.substring(起始位置) 从起始位置截取(包含)截到最后面

5.substring(起始,结束) 截取 前包后不包

6.indexOf(“所要查询的字符串”) 从左往右找第一次出现索引的位置

7.lsatIndexOf(“所要查询的字符串”) 从右往左找第一次出现索引的位置

在这里插入图片描述

—练习
		   0123456789(10)(11)
字符串	str="abcdabcdabcd";
1.找出第一个	b 所在的位置
2.输出字符串的长度
3.截取字符串前5位
4.截取后一半的字符串
5.找到第二个	b 所在的位置		(先找到第一个b,然后截取后面的内容,再找第一个)
6.截取第二个	b 到第三个 b 之间的内容

在这里插入图片描述

补充:	
indexOf("b",2)	//从索引位置是2的位置往右找第一次出现的索引位置

字符串拆分

split()

字符串的拆分

在这里插入图片描述

tim();

去掉收尾两端的空格

在这里插入图片描述

toCharArray()方法

将字符串转换成字符的数组

在这里插入图片描述

replace(旧的字符串,新的字符串) —>字符串的替换

toLowerCase() —>转成小写的

toUpperCase() —>转成大写的

在这里插入图片描述

startsWith(所要判断的字符串)
endsWith(所要判断的字符串)

判断此字符串是否是开头或者结尾(区分大小写)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值