Java中的String类
String类实现了
Serializable,Comparable,CharSequence接口并通过final关键字修饰,所以不能被继承。
String是一个符合类型,是一个不可变的字符串,字符串是一个常量,一旦创建就不能更改它的值和长度(定长)。
(String的底层是通过基本类型的字符类型char实现的)
String可以通过new创建,直接给一个String变量赋值。
String s=new String();
String中的方法
序号 | 方法名 | 具体功能 | 补充 |
---|---|---|---|
1 | charAt(index) | 获取字符串中index的位置,返回一个字符串 | index相当与数组的下标从0开始到达它的长度减一,(注意超过长度就会显示字符串下标越界的错误) |
2 | length() | 返回字符串的长度 | 与数组同理 |
3 | concat(s2) | 将s2拼接到当前调用concat方法的字符串后面,生成一个新的字符串,原来的字符串不变 | s2是另一个需要拼接的字符串,因为字符串是定长的所以拼接的字符串需要一个新的变量来接收 |
4 | contains | 判断字符串中是否有子字符串返回一个boolean类型 | 例如有字符串"ABC"它的子串有A,B,C,AB,BC,ABC |
5 | endswith(s2) | 判断当前调用endswith()方法的字符串中是否以s2结尾,返回一个boolean类型 | s2是需要判断的另一个字符串 |
6 | equals(Object o) | 判断两个字符串是否相等,不忽略大小写 | 由于字符串是符合类型它的数据是放在堆里的所以在对比两个字符串是否相等事不能通过==来判断,equals重写了Object的equals方法 |
7 | equalslgnoreCase(s2) | 忽略大小写判断当前调用equalslgnoreCase()方法的字符串与s2字符串是否相等 | s2是需要对比的一个字符串,这个方法多用于验证码的登录 |
8 | indexof(s2) | 返回s2在当前调用indexof()方法的字符串中第一次出现的位置如果不包含返回负一 | (s2可以是字符串也可以是字符串) |
9 | lastlndexof(s2) | 返回s2在当前调用indexof()方法的字符串中最后一次出现的位置如果不包含返回负一 | (s2可以是字符串也可以是字符串) |
10 | isempty() | 判断当前调用该方法的字符串是否为空 | 空字符串是" "指的是字符串的长度,不是null |
11 | replace(s1,s2) | 将当前调用该方法的字符中s1字符串替换为s2的字符串原字符串不变,因为修改了字符串所以需要接收 | 这个方法的使用率比较高只要是修改字符串大多数都能使用这个方法 |
12 | replaceAll("[0-9]",x) | 将当前字符串中的所有数字替换为x | 可以和正则表达式一起使用更方便 |
13 | spilt("#") | 将当前字符串通过#拆开,拆开后需要用字符串接收 | 如果括号中的参数是转义字符必须在前面加上\如"\." |
14 | substring(int n) | 从当前字符串的第n个位置截取后面的所有字符串 | n是你输入的相当于字符串下标的数字下标从0开始 |
15 | substring(n,m) | 从当前字符串的第n个位置截取到第m个位置,不包含m个位置,原字符串不变 | 需要一个String类型的变量接收 |
16 | toLowerCase() | 将当前字符串中的所有大写字母转换为小写字母,原字符串不变,生成一个新的字符串 | 需要一个String类型的变量接收 |
17 | toUperCase() | 将当前字符串中的所有小写字母转换为大写字母,原字符串不变,生成一个新的字符串 | 需要一个String类型的变量接收 |
18 | trim() | 将当前字符串两边的空格去掉,中间的空格不管 | 一般用于判断用户注册和登录时 |
19 | valueof(int x) | 这是一个静态方法,效果是把x转换成字符串 | 可以通过加空引号实现相同方法 |
如有不足请通过评论补充
String对象通过直接赋值和通过new的区别
String s1="ABC";
//可能创建对象或者不创建
//如果"ABC"在JavaString池中不存在,会在JavaString池中创建对象"ABC",如果已经存在"ABC"对象s1的指针会直接指向存在的那个"ABC"对象,不会创建新对象.
String s2=new String("ABC");
//当new出现的时候就至少创建一个对象.
判断String对象是否相等
new对象
String s1= new String("ABC");
String s2 = new String("ABC");
//s1==s2的值是true还是false?
//false
//new了两个不同的对象
不new对象
String s1 = "ABC";
String s2 = "ABC";
String s3 = "A" + "BC";
//s1== s2的值是true还是false?
//true
//s1 == s3的值是true还是false?
//true
//s1在内存中没有找到"ABC"新建了一个对象为ABC,s2发现内存中有"ABC"就直接指向了s1创建的"ABC",s3与s2相同在内存中直接指向了"ABC"
String s1 = "ABC";
String s2="AB";
String s3=s2+"C";
System.out.println(s1==s3);
//false
//这里s2+"C"的时候是创建了一个新的对象,然后把这个新的对象引用指向s3
到这里都是一下String的一些基础知识,大多可以通过jdk的API文档查阅这里只是粗略的介绍一些String中的常用方法,如有不足请在评论区分享出来。