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(所要判断的字符串)
判断此字符串是否是开头或者结尾(区分大小写)

深入理解Java String方法

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

被折叠的 条评论
为什么被折叠?



