一、概述
String类是Java语言中最重要的类之一,它用于表示字符串。Java String类提供了许多有用的方法和常量,可以用于处理和操作字符串。本技术文档将详细介绍String类的常用API及其用法。
二、常用方法
-
1、构造方法:
- String():创建一个空字符串对象。
- String(char[] value):根据字符数组创建一个新的字符串对象。
- String(byte[] bytes):根据字节数组创建一个新的字符串对象。
- String(byte[] bytes, Charset charset):根据字节数组和字符集创建一个新的字符串对象。
- String(String original):根据给定的字符串创建一个新的字符串对象。
String str1 = new String();
String str2 = new String(new char[]{'H', 'e', 'l', 'l', 'o'});
String str3 = new String(new byte[]{72, 101, 108, 108, 111});
String str4 = new String("Hello");
String str5 = new String(str4);
-
2、获取字符串长度:
- int length():返回字符串的长度。
int len = str1.length();
-
3、获取子串:
- String substring(int beginIndex):返回从指定索引开始到字符串末尾的子串。
- String substring(int beginIndex, int endIndex):返回从指定开始索引到结束索引之间的子串。
String subStr1 = str1.substring(0, 2); // "He"
String subStr2 = str1.substring(2); // "llo"
-
4、连接字符串:
- String concat(String str):将指定的字符串连接到当前字符串的末尾。
- String concat(String... strs):将指定的多个字符串连接到当前字符串的末尾。
String str6 = str1.concat(" World"); // "Hello World"
String str7 = str1.concat("World", "!"); // "HelloWorld!"
-
5、比较字符串:
- boolean equals(Object anObject):比较两个字符串是否相等。
- boolean equalsIgnoreCase(String anotherString):比较两个字符串是否相等,忽略大小写。
- int compareTo(String anotherString):比较两个字符串的顺序。
boolean isEqual = str1.equals("Hello"); // true
boolean isEqualIgnoreCase = str1.equalsIgnoreCase("hello"); // true
int compareResult = str1.compareTo("Hello"); // 0
-
6、查找子串:
- int indexOf(String str):返回指定子串在当前字符串中首次出现的位置。
- int indexOf(String str, int fromIndex):返回指定子串从指定位置开始在当前字符串中首次出现的位置。
- int lastIndexOf(String str):返回指定子串在当前字符串中最后一次出现的位置。
- int lastIndexOf(String str, int fromIndex):返回指定子串从指定位置开始在当前字符串中最后一次出现的位置。
int index1 = str1.indexOf("llo"); // 2
int index2 = str1.indexOf("llo", 3); // -1
int index3 = str1.lastIndexOf("llo"); // 2
int index4 = str1.lastIndexOf("llo", 3); // 2
-
7、替换子串:
- String replace(CharSequence target, CharSequence replacement):将当前字符串中的指定子串替换为新的子串。
- String replaceAll(String regex, String replacement):使用正则表达式将当前字符串中的匹配项替换为新的子串。
String str8 = str1.replace("l", "L"); // "HeLLo"
String str9 = str1.replaceAll("l", "L"); // "HeLLo"
-
8、分割字符串:
- String[] split(String regex):根据给定的正则表达式将当前字符串分割为一个字符串数组。
- String[] split(String regex, int limit):根据给定的正则表达式将当前字符串分割为一个字符串数组,限制分割的次数。
String[] arr1 = str1.split(" "); // ["Hello"]
String[] arr2 = str1.split(" ", 2); // ["Hello", "World"]
三、注意事项
- 在比较字符串时,应使用
equals()
方法而不是==
运算符,因为==
运算符比较的是引用而不是字符串内容。 - 尽量避免使用
StringBuffer
和StringBuilder
类的实例变量,因为这可能导致线程安全问题。如果需要频繁地修改字符串,应该使用StringBuilder
;如果不需要频繁地修改字符串,应该使用String
。