常用的构造方法
String()
String(String str)
String(byte[] bytes)
String(char[] value)
常用方法
1、toString()
toString() 方法:返回字符串本身,返回值为 String 类型
String str = new String(“Hello World”);
2、length()
length() 方法:返回字符串字符序列的长度(空格也算),返回值为 int 类型
String str = new String(“Hello World”);
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]);//打印的是每个字母对应的ASCII码 }
4、toCharArray()
toCharArray() 方法:将当前字符串内容转换为 char 数组并返回,返回值为 char[],该方法的返回值可作为 String 构造方法的参数
String str = new String(“Hello World”);
char[] cArr = str.toCharArray(); for (int i = 0; i < str.length(); i++) { System.out.println(“下标为” + i + “的元素为:” + cArr[i]);//打印的是每个字母 }
5、charAt(int index)
charAt(int index) 方法:用于返回字符串指定位置的字符,返回值为 char 类型,参数为 int 类型
String str = new String(“Hello World”);
for (int i = 0; i < str.length(); i++) { System.out.println(“下标为” + i + “的元素为:” + str.charAt(i));//打印的是每个字母 }
6、isEmpty()
isEmpty() 方法:判断字符串是否为空,返回值为 boolean 类型,查看该方法的源码可知字符串的 length 为0则为空
注意:开发中判断字符串是否为空一般采用 StringUtils 中的静态方 isEmpty() 和 isBlank();
补充:StringUtils 类与 String 类的区别在于:StringUtils 类是 null 安全的,即使输入参数 String 为 null也不会抛出 NullPointerException 空指针异常。
7、equals(String str)
equals(Object anObject) 方法:比较字符串内容是否相等并返回,返回值为 boolean 类型
8、equalsIgnoreCase(String anotherString)方法:比较字符串内容是否相等并返回,返回值为 boolean 类型,忽略大小写, 例如:
“AbCdt“和“aBcdt“也是相等的
补充:开发中作比较一般常量值在前,变量值在后,避免空指针异常
“helloworld”.equalsIgnoreCase(str));
9、compareTo(String str)
比较调用对象和参数对象的大小关系,返回值为 int 类型,忽略大小写,即使“afhjj“和“afhJJ“也是相等的关系
结果有三种:负整数、正整数、零。负整数即按字典顺序 A 在 B 之前,正整数即 A 在 B 之后,零则为字符串相等。
补充:比较出大小就不往后进行,即从第一个子字符串开始比较,相同则比较下一个,直到比较出大小或比较到最后一个字符。
10、contains(CharSequence s)
contains(CharSequence s) 方法:判断当前字符串是否包含参数指定的内容,返回值为 boolean 类型,参数CharSequence 为一个接口,CharSequence 是 char 值的可读序列,参数可以为String、StringBuilder、StringBuffer等类型
11、trim()
trim() 方法:返回去掉前导和尾随空白的字符串,返回值为 String 类型
String str = " Hello World "; System.out.println(str.trim());
12、toUpperCase() 、toLowerCase()
toUpperCase() 方法:返回字符串的大写形式,返回值为 String 类型
toLowerCase() 方法:返回字符串的小写形式,返回值为 String 类型
此两种方法经常用于在对字符串做判断时使用,因为要判断的字符串可能为驼峰式或者不规则的方式,故先将判断的字符串转为大写或者小写,然后与常量去做比较。
13、substring(…)
该方法有两个重载的方法,分别为:
substring(int beginIndex, int endIndex) 方法:返回字符串中从下标 beginIndex(包括) 开始到 endIndex(不包括) 结束的子字符串,返回值为 String 类型,参数为 int 类型
substring(int beginIndex) 方法:返回字符串中从下标 beginIndex(包括) 开始到字符串结尾的子字符串,返回值为 String 类型,参数为 int 类型
补充:Java 中涉及到区间的问题,一般都为 左边包括,右边不包括,即左开右闭,“[ x , y )”。
14、replace(…)
replace(char oldChar, char newChar) 方法:使用参数newChar替换此字符串中出现的所有参数oldChar,返回值为 String 类型,参数为 char 类型
replace(CharSequence target, CharSequence replacement) 方法:用新字符串replacement替换所有的旧字符串target,返回值为 String 类型,参数为 CharSequence 接口
15、split(String regex)
split(String regex) 方法:参数regex为正则表达式,以regex所表示的字符串为分隔符,将字符串拆分成字符串数组,结尾的空字符串不包含在结果数组中,返回值为 String[] 类型,参数为 String 类型
String str = “boo:and:foo”;
String[] split = str.split("😊;//结果为:“boo”, “and”, “foo” 。
16、startsWith(…) 和 endsWith(…)
startsWith(String prefix) 方法:判断字符串是否以参数字符串开头,返回值为 boolean 类型,参数为 String 类型
startsWith(String prefix, int toffset) 方法:从指定位置开始是否以参数字符串开头,返回值为 boolean 类型。参数 prefix 为 String 类型,toffset 为 int 类型
endsWith(String suffix) 方法:判断字符串是否以参数字符串结尾,返回值为 boolean 类型,参 数为 String 类型
17、indexOf(…) 和 lastIndexOf(…)
方法声明功能介绍int indexOf(int ch)用于返回当前字符串中参数 ch 指定的字符第一次出现的下标int indexOf(int ch, int fromIndex)用于从 fromIndex(包含) 位置开始查找ch指定的字符int indexOf(String str)在字符串中检索 str 返回其第一次出现的位置,若找不到返回-1int indexOf(String str, int fromIndex)表示从字符串的 fromIndex(包含) 位置开始检索str第一次出现的位置int lastIndexOf(int ch)用于返回参数 ch 指定的字符最后一次出现的下标int lastIndexOf(int ch, int fromIndex)用于从 fromIndex(包含) 位置开始反向查找 ch 指定字符出现的下标,若找不到返回-1int lastIndexOf(String str)返回 str 指定字符串最后一次出现的下标int lastIndexOf(String str, int fromIndex)用于从 fromIndex(包含) 位置开始反向搜索的第一次出现的下标
扩展:
常量池(了解):由于String类型描述的字符串内容是常量不可改变,因此 Java 虚拟机将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。