日升时奋斗,日落时自省
目录
一、String类
java语言有针对字符串的类,String,字符串对于我们来说太常见不过了,字符串系列函数完成大部分操作,String了解就比较有必要了
1.使用方法
1.1字符串构造
这里提供了三种 字符串构造,有了字符串构造,我们最常想起的就是字符串的长度计算
public class Test {
public static void main(String[] args) {
//常量字符串构造 我们最常见的构造方式 也最简洁
String s1="struggle";
System.out.println(s1);
//new String对象构造也是可以的 字符串形式放入
String s2=new String("struggle");
System.out.println(s2);
//字符数组构造 将数组放入new String中就可以
char[] arr={'s','t','r','u','g','g','l','e'};
String s3=new String(arr);
System.out.println(s1);
System.out.println(s1.length()); //对象.length()
System.out.println(s2.length());
System.out.println(s3.length());
}
}
String是引用类型,内部并不存在字符串本身 是通过堆中创建的对象储存的
如下:
以上述代码为使用例:(下图解释)
这里是通过在堆上创建一个对象,string与string2图上给的比较清晰,这里string给string3传字符串时,就将string3指向了当时string存放字符串创建的对象,就构成了赋值
2.String对象的比较
2.1比较引用对象
首先是“==”这个等号比较的是储存的值是否相同
前面基本类型定义的是相等的
后面对于引用类型变量
(1)==比较两个引用变量引用的是否为同一个对象,s3与s4都创建了一个对象,创建对象的地址是不相同的,所以比较两者值的时候也是不相同的
(2)而这里为什么s6与s3是相同的呢,因为在前面提及过,这个两个对象指向的是同一个创建对象,有着相同的地址,所以比较相同
2.2涉及到比较的常用方法
(1)boolean equals(Object anObject)方法:按照字典比较
同样就用刚刚写到上创建的对象s3与s4用equals方法比较就是true,是比较字符串是否相同,不能比较两者的大小
(2)int compareTo(String s)方法
该方法可以对比大小
用代码 的一个使用例:
这里是对比对象的字符串的大小 ,对象1.compareTo(对象2)===对象1-对象2的值就是以上得出来的数字
3.字符串查找
这个可以尝试练习一下,尝试不同的字符串
4.转化
4.1数值和字符串转化
首先我们先写一个学生类,为下面的解释
上面都有注释,我详细解释一下打印对象
为什么会这样呢,主要是在println打印的时候需要调用toString方法,但是方法并不是我们想要的结果,我们可以在类中重写这个方法,为我们所用
4.2大小写转换
这里我就在多叙述了,直接调用方法即可
4.3字符串转数组
4.4格式化
format解释:使用指定的语言环境、格式字符串和参数返回一个格式化字符串。与我们学过C语言当中的printf相似,可以自己控制
5.字符串的替换
字符串替换我们要提及有这几个方法
(1)replace可以替换一个字符也可以替换一个字符串,它有两个重载形式,替换的是所有
(2)replaceFirst替换的仅仅是第一个字符或者字符串
(3)replaceAll将一个字符或者字符串替换在整个字符串中
使用例:(代码解释)
通过当前对比,更好理解
6.拆分字符
拆分字符的两个方法
(1)String[] split(String regex) 全部拆分
(2)String[] split(String regex,int limit) 限定limit拆分个数
这里我们可以用一个符号拆分,也可以用多个,就需要一个这样“|”符号,这里限制了拆分的个数2个
运行结果:
如果这里看不习惯的还可以一步一步拆分
接下来看
首先是以“&”这个符号拆分后的在for循环中再次拆分以“=”拆分
运行结果:
这里提及一个小细节问题,有些符号比较特殊 例如:
如果是当前的双斜杠,怎么写在方法split中呢,需要另外一个斜杠来修饰\\表示的是一个斜杠所以这里的两个斜杠就需要\\\\四个斜杠来表示当前的两个斜杠
这个也与上面相同,符号点是特殊符号,只能用单斜杠修饰,但是单斜杠不能直接写也需要修饰,所以用双斜杠表示单斜杠,来修饰符号点
7.字符串截取
字符串截取的方法
(1)String substring (int beginIndex) 指定某个坐标的位置截取到结尾
(2)String substring(int beginIndex ,int endIndex) 指定某个区间 左开右闭[ , )
运行结果:
运行结果就是最好的证明了,当前就是以左闭右开来解释,没有取到4,当前只有三个字符