Java面试题:String 类的常用方法都有那些?

本文将介绍 Java 的 String 类常用方法。

在 Java 中 String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。大小写映射基于 Character 类指定的 Unicode 标准版。

String 类常用方法

获取指定字符的索引

  • int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。

  • int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

  • int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。

  • int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

示例:

String str = "administrator";
System.out.println(str.indexOf("i"));
System.out.println(str.indexOf("i", 4));

输出结果如下:

3
5

获取指定索引处的字符

  • char charAt(int index) 返回指定索引处的 char 值

示例:

String str = "administrator";
System.out.println(str.charAt(5));

输出结果如下:

i

字符串替换

  • String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

  • String replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

  • String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

  • String replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

示例:

String str = "administrator admin";
System.out.println(str.replace("i", "#"));
System.out.println(str.replace("admin", "ADMIN"));
System.out.println(str.replaceAll("admin", "ADMIN"));
System.out.println(str.replaceFirst("admin", "ADMIN"));

输出结果如下:

adm#n#strator adm#n
ADMINistrator ADMIN
ADMINistrator ADMIN
ADMINistrator admin

去除字符串两端空白

  • String trim() 返回字符串的副本,忽略前导空白和尾部空白。

示例:

String str = "    administrator    ";
System.out.println("|" + str + "|");
System.out.println("|" + str.trim() + "|");

输出结果如下:

|    administrator    |
|administrator|

分割字符串

  • String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。

  • String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。

示例:

String str = "administrator";
String[] str1 = str.split("i");
System.out.println(Arrays.toString(str1));

String[] str2 = str.split("i", 2);
System.out.println(Arrays.toString(str2));

输出结果如下:

[adm, n, strator]
[adm, nistrator]

返回字符串的 byte 类型数组

  • byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

  • byte[] getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。

  • byte[] getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

示例:

String str = "administrator";
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes));
bytes = str.getBytes("UTF-8");
System.out.println(Arrays.toString(bytes));

输出结果如下:

[97, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114]
[97, 100, 109, 105, 110, 105, 115, 116, 114, 97, 116, 111, 114]

返回字符串长度

  • int length() 返回此字符串的长度。

示例:

String str = "administrator";
System.out.println(str.length());

输出结果如下:

13

大小写转换

  • String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

  • String toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。

  • String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

  • String toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。

示例:

String str = "administrator";
System.out.println(str.toUpperCase());
str = "ADMINISTRATOR";
System.out.println(str.toLowerCase());

输出结果如下:

ADMINISTRATOR
administrator

截取字符串

  • String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。

  • String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。

示例:

String str = "administrator";
System.out.println(str.substring(5));
System.out.println(str.substring(5, 10));

输出结果如下:

istrator
istra

字符串比较

  • boolean equals(Object anObject) 将此字符串与指定的对象比较。

  • boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。

示例:

String str = "admin";
System.out.println(str.equals("admin"));
System.out.println(str.equalsIgnoreCase("Admin"));

输出结果如下:

true
true

equals 源码如下:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String aString = (String)anObject;
        if (coder() == aString.coder()) {
            return isLatin1() ? StringLatin1.equals(value, aString.value)
                            : StringUTF16.equals(value, aString.value);
        }
    }
    return false;
}
一寸光阴一寸金,寸金难买寸光阴。——《增广贤文》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号