文章目录
Java 中 String 类的常用方法
一、String 类的概念
二、常用的构造方法
三、常用方法
1、toString()
2、length()
3、getBytes()
4、toCharArray()
5、charAt(int index)
6、isEmpty()
7、equals(Object anObject)
8、compareTo(String anotherString)
9、contains(CharSequence s)
10、trim()
11、toUpperCase() 和 toLowerCase()
12、substring(...)
13、replace(...)
14、split(String regex)
15、indexOf(...) 和 lastIndexOf(...)
一、String 类的概念
java.lang.String 类用于描述字符串,Java程序中所有的字符串面值都可以用该类的对象加以描述。
该类由 final 关键字修饰,表示该类不能被继承。
常量池(了解):由于String类型描述的字符串内容是常量不可改变,因此 Java 虚拟机将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。
二、常用的构造方法
方法声明 | 功能介绍 |
String() | 使用无参方式构造对象得到空字符序 |
String(byte[] bytes) | 使用 bytes 数组中的所有内容构造对象 |
String(char[] value) | 使用 value 数组中的所有内容构造对象 |
String(String original) | 根据参数指定的字符串内容来构造对象,新创建对象为参数对象的副本 |
三、常用方法
1、toString()
toString() 方法:返回字符串本身,返回值为 String 类型
2、length()
length() 方法:返回字符串字符序列的长度(空格也算),返回值为 int 类型
public static void main(String[] args) {
String str="abcdefg";
System.out.println(str.length());
}
3、getBytes()
getBytes() 方法:将当前字符串内容转换为 byte 数组并返回,返回值为 byte[],该方法的返回值可作为 String 构造方法的参数
String str = new String("Hello World");
byte[] bytes = str.getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println("下标为" + i + "的元素为:" + bytes[i]);
}
将String类型转换为byte数组类型并打印
先将字符串拆分为字符,再将每个字符转换为byte类型,也就是获取所有字符的ASCII码
4、toCharArray()
toCharArray() 方法:将当前字符串内容转换为 char 数组并返回,返回值为 char[],该方法的返回值可作为 String 构造方法的参数
public static void main(String[] args) {
String str="abcdefg";
char[] ch=str.toCharArray();
for (int i = 0; i < str.length(); i++) {
System.out.print(ch[i]);
}
}
5、charAt(int index)
charAt(int index) 方法:用于返回字符串指定位置的字符,返回值为 char 类型,参数为 int 类型
public static void main(String[] args) {
String str="abcdefg";
for (int i = 0; i < str.length(); i++) {
char ch=str.charAt(i);
System.out.print(ch);
}
}
6、isEmpty()
isEmpty() 方法:判断字符串是否为空,返回值为 boolean 类型,查看该方法的源码可知字符串的 length 为0则为空
注意:开发中判断字符串是否为空一般采用 org.apache.commons.lang3 下的 StringUtils 中的静态方法 isEmpty() 和 isBlank();
StringUtils 类与 String 类的区别在于:StringUtils 类是 null 安全的,即如果输入参数 String 为 null,则不会抛出 NullPointerException 空指针异常,代码考虑更全面
public static void main(String[] args) {
String str1="abcdefg";
String str2="";
String str3=" ";
System.out.println(str1.isEmpty());
System.out.println(str2.isEmpty());
System.out.println(str3.isEmpty());
}
7、equals(Object anObject)
equals(Object anObject) 方法:比较字符串内容是否相等并返回,返回值为 boolean 类型
equalsIgnoreCase(String anotherString)方法:比较字符串内容是否相等并返回,返回值为 boolean 类型,不考虑大小写, 如:'A’和’a’是相等
public static void main(String[] args) {
String str="abcdef";
String str1="abcde";
String str2="abcdef";
System.out.println(str.equals(str1));
System.out.println(str.equals(str2));
}
8、compareTo(String anotherString)
compareTo(String anotherString) 方法:比较调用对象和参数对象的大小关系,返回值为 int 类型
compareToIgnoreCase(String str) 方法:比较调用对象和参数对象的大小关系,返回值为 int 类型,不考虑大小写,也就是’a’和’A’是相等的关系
比较大小的方法:例如 A.compareTo(B),拿方法调用者(A)的字符依次与方法参数(B)的字符作比较,即用 A 的 ASCII码减去 B 的ASCII码;结果有三种:负整数、正整数、零。负整数即按字典顺序 A 在 B 之前,正整数即 A 在 B 之后,零则为字符串相等。
注意:比较出大小就不往后进行,即从第一个字符串开始比较,相同则比较下一个,直到比较出大小或比较到最后一个字符。
public static void main(String[] args) {
String str="abcdef";
String str2="abcedr";
System.out.println(str.compareTo(str2));
}
9、contains(CharSequence s)
contains(CharSequence s) 方法:判断当前字符串是否包含参数指定的内容,返回值为 boolean 类型,参数CharSequence 为一个接口,CharSequence 是 char 值的可读序列,参数可以为String、StringBuilder、StringBuffer等类型
public class test {
public static void main(String[] args) {
String str = "Give you some color to see see";
System.out.println(str.contains("some"));//true
System.out.println(str.contains("Some"));//false
}
10、trim()
trim() 方法:返回去掉前导和尾随空白的字符串,返回值为 String 类型
public static void main(String[] args) {
String str = " Hello World ";
System.out.println(str);
System.out.println(str.trim());
System.out.println(str.length());
System.out.println(str.trim().length());
}
11、toUpperCase() 和 toLowerCase()
toUpperCase() 方法:返回字符串的大写形式,返回值为 String 类型
toLowerCase() 方法:返回字符串的小写形式,返回值为 String 类型
此两种方法经常用于在对字符串做判断时使用,因为要判断的字符串可能为驼峰式或者不规则的方式,故先将判断的字符串转为大写或者小写,然后与常量去做比较。
String str = "Hello World";
System.out.println(str.toLowerCase());//hello world
System.out.println(str.toUpperCase());//HELLO WORLD
12、substring(…)
substring(int beginIndex, int endIndex) 方法:返回字符串中从下标 beginIndex(包括) 开始到 endIndex(不包括) 结束的子字符串,返回值为 String 类型,参数为 int 类型
substring(int beginIndex) 方法:返回字符串中从下标 beginIndex(包括) 开始到字符串结尾的子字符串,返回值为 String 类型,参数为 int 类型
注意:Java 中涉及到区间的问题,一般都为 左边包括,右边不包括,即左开右闭,“[ x , y )”
public static void main(String[] args) {
String str="abcdefghijklmn";
System.out.println(str.substring(2,8));
}
13、replace(…)
replace(char oldChar, char newChar) 方法:使用参数newChar替换此字符串中出现的所有参数oldChar,返回值为 String 类型,参数为 char 类型
replace(CharSequence target, CharSequence replacement) 方法:用新字符串replacement替换所有的旧字符串target,返回值为 String 类型,参数为 CharSequence 接口
public static void main(String[] args) {
String str="abcaeag";
System.out.println(str.replace('a','b'));
}
14、split(String regex)
split(String regex) 方法:参数regex为正则表达式,以regex所表示的字符串为分隔符,将字符串拆分成字符串数组,结尾的空字符串不包含在结果数组中,返回值为 String[] 类型,参数为 String 类型
public static void main(String[] args) {
String str="av:axa:xa";
String[] str1=str.split(":");
System.out.println(Arrays.toString(str1));
}
15、indexOf(…) 和 lastIndexOf(…)
方法声明 | 功能介绍 |
int indexOf(int ch) | 用于返回当前字符串中参数 ch 指定的字符第一次出现的下标 |
int indexOf(int ch, int fromIndex) | 用于从 fromIndex(包含) 位置开始查找ch指定的字符 |
int indexOf(String str) | 在字符串中检索 str 返回其第一次出现的位置,若找不到返回-1 |
int indexOf(String str, int fromIndex) | 表示从字符串的 fromIndex(包含) 位置开始检索str第一次出现的位置 |
int lastIndexOf(int ch) | 用于返回参数 ch 指定的字符最后一次出现的下标 |
int lastIndexOf(int ch, int fromIndex) | 用于从 fromIndex(包含) 位置开始反向查找 ch 指定字符出现的下标,若找不到返回-1 |
int lastIndexOf(String str) | 返回 str 指定字符串最后一次出现的下标 |
int lastIndexOf(String str, int fromIndex) | 用于从 fromIndex(包含) 位置开始反向搜索的第一次出现的下标 |
public static void main(String[] args) {
String str="abcdefghijklmn";
System.out.println(str.indexOf('e'));
System.out.println(str.lastIndexOf('e'));
}