在java中String并不是基本数据类型,其本质是一个类
字符串在Java程序中占据着非常重要的地位,所以掌握其中相关方法也非常重要,并且在面试中也是其中的一个重点知识内容
以下是java中String常用的方法:
一.字符串的转化
常用方法:
转换方法 | 描述 |
string.charAt(number) |
返回字符串中索引为number 的字符。索引从0开始,所以number=0 表示字符串的第一个字符。 |
char[] test = string.toCharArray() |
将字符串中的每个字符转换为字符数组,并将结果保存在test 数组中。这样可以逐个访问和处理字符串中的字符。 |
byte[] test = string.getBytes() |
将字符串转换为字节数组。这在数据传输和网络通信中非常常见,因为字节流可以更有效地传输和处理数据。 |
案例代码:实现常用的String的转换方法
package Example; public class javaDemo { public static void main(String[] args) { String test = "ok,xdm,看我看我,我是个啥b"; char a = test.charAt(5); // 字符串中转化为字符 System.out.println(a); char b[] = test.toCharArray(); // 字符串转化为数组 for (int i= 0;i<b.length;i++){ System.out.print(b[i]); } System.out.println(""); byte bbyte[] = test.getBytes(); // 字符串转化为字节 for (int i= 0;i<bbyte.length;i++){ System.out.print(bbyte[i]); } } }
二.字符串的查找
常用方法:
方法 | 描述 | 返回值 |
string.indexOf(str) |
从左到右开始查找字符串中第一次出现str 的位置。如果找到,返回字符所在的下标;如果没有找到,返回-1。 |
找到:字符所在的下标;未找到:-1 |
string.lastIndexOf(str) |
从右到左开始查找字符串中最后一次出现str 的位置。如果找到,返回字符所在的下标;如果没有找到,返回-1。 |
找到:字符所在的下标;未找到:-1 |
string.contains(str) |
判断字符串中是否包含子字符串str 。如果包含,返回true ;如果不包含,返回false 。 |
包含:true ;不包含:false |
案例代码:字符串的查找
package Example; public class javaDemo { public static void main(String[] args) { String test = "ok,xdm,看我看我,我是个啥b"; System.out.println(test.indexOf("啥a")); System.out.println(test.indexOf("啥b")); System.out.println(test.contains("啥b")); //查找字符串内是否有"啥b" } }
三.字符串的替换
常用方法:
方法 | 描述 |
string.replaceFirst(oldStr, newStr) |
替换字符串中第一个匹配到的oldStr 子字符串为newStr 子字符串。 |
string.replaceAll(oldStr, newStr) |
替换字符串中所有匹配到的oldStr 子字符串为newStr 子字符串。 |
案例代码:
package Example; public class javaDemo { public static void main(String[] args) { String test = "瑞克四代才是神"; String test2 = test.replaceFirst("四","五"); System.out.println(test2); } }
四.字符串的截取
常用方法:
方法 | 描述 |
string.substring(startIndex) |
从指定起始索引startIndex 开始截取字符串,返回从该索引到字符串末尾的子字符串。 |
string.substring(startIndex, endIndex) |
从指定起始索引startIndex 开始截取字符串,直到结束索引endIndex 之前的位置,返回包含的子字符串。 |
案例代码: 提取跳过前两个字符的字符串
package Example; public class javaDemo { public static void main(String[] args) { String test = "不要断章取义"; System.out.println(test.substring(1)); } }
五.字符串的拆分
常用方法:
方法 | 描述 |
string.split(delimiter) |
将字符串按照指定的分隔符delimiter 进行拆分,并返回一个字符串数组,其中包含被拆分后的子字符串。 |
案例代码:设置String数组接收一个字符串以空格为分隔符的字符串
package Example; public class javaDemo { public static void main(String[] args) { String test = "房子,黑人,女朋友 归男,孩子"; String badEnding[] = test.split(" "); for (int i=0; i<badEnding.length;i++){ System.out.println(badEnding[i]); } } }
六.字符串的比较
常用方法:
方法 | 描述 |
string.equals(str) |
比较字符串与给定的str 是否相等。返回true ,如果字符串相等;返回false ,如果字符串不相等。 |
string.equalsIgnoreCase(str) |
比较字符串与给定的str 是否相等,不区分大小写。返回true ,如果字符串相等;返回false ,如果字符串不相等。 |
案例代码:
package Example; public class javaDemo { public static void main(String[] args) { String test = "abcdefg"; System.out.println(test.equals("ffffffff")); System.out.println(test.equals("abcdefg")); System.out.println(test.equalsIgnoreCase("ffffffff")); System.out.println(test.equalsIgnoreCase("ABCDEFG")); } }
面试题:字符串之间 “==”与equals的方法的区别
1.对于基本类型,==比较的是值
2.对于引用类型,==比较的是地址
3.equals类型不能用于基本类型的比较
4.如果没有重写equals,equals就相当于 ==
5.如果重写了equals方法,equals比较的就是对象内容
七.其他类
方法 | 描述 |
toUpperCase() |
将字符串转换为大写字母形式。 |
toLowerCase() |
将字符串转换为小写字母形式。 |
length() |
返回字符串的长度,即包含的字符个数。 |
concat(str) |
将指定字符串 str 连接到原字符串的末尾。 |
trim() |
去除字符串两端的空白字符(包括空格、制表符、换行符等),返回新字符串。 |
字符串拼接concat()与“+”区别
主要区别如下:
- 返回值:
concat()
方法返回一个新的字符串对象,将当前字符串与指定字符串连接起来,而符号"+"直接在原有字符串上进行修改并返回结果。- 内部实现:
concat()
方法使用了StringBuilder(在常用类库中)或StringBuffer来执行字符串的连接操作,而符号"+"使用StringBuilder在内部实现中完成字符串的拼接。- 可读性:
concat()
方法的语法比较明确,可以清楚地表达出字符串的连接操作;而符号"+"的使用更为简便和直观,可以直接将两个字符串用"+"进行连接。
面试题:String类的常用方法有哪些?
equals、length、contains、replace、split、hashcode、indexof、substring、trim、toUpperCase、toLowerCase、isEmpty等等