Java 字符串类
在Java编程中广泛使用的字符串是一系列字符。在Java编程语言中,字符串被视为对象。
Java平台提供了String类来创建和操作字符串。
创建字符串
创建字符串的最直接方式是写入-
String greeting = "Hello world!";
每当在你的代码中遇到一个字符串常量时,编译器会创建一个String对象,其值为”Hello world!”。
和其他对象一样,你可以使用new关键字和构造函数来创建String对象。String类有11个构造函数,它们允许你使用不同的来源提供字符串的初始值,例如字符数组。
示例
public class StringDemo {
public static void main(String args[]) {
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
这将产生以下结果 −
输出
hello.
注意 − String类是不可变的,一旦创建了String对象就不能更改。如果有必要对字符的字符串进行大量修改,则应使用String Buffer & String Builder类。
字符串长度
用于获取有关对象信息的方法称为 访问器方法 。您可以与字符串一起使用的一个访问器方法是length()方法,它返回字符串对象中包含的字符数。
下面的程序是 length() 方法String类的示例。
示例
public class StringDemo {
public static void main(String args[]) {
String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
System.out.println( "String Length is : " + len );
}
}
这将产生以下结果:
输出
String Length is : 17
连接字符串
String类中包含一个用于连接两个字符串的方法 –
string1.concat(string2);
这将返回一个新的字符串,该字符串是在字符串1的末尾添加了字符串2。您也可以使用concat()方法与字符串字面值一起使用,如下所示 –
"My name is ".concat("Zara");
字符串通常使用+运算符进行拼接,就像这样-
"Hello," + " world" + "!"
导致的结果是 −
"Hello, world!"
让我们看下面的示例−
示例
public class StringDemo {
public static void main(String args[]) {
String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");
}
}
这将产生以下结果 −
输出
Dot saw I was Tod
创建格式化字符串
你可以使用printf()和format()方法来打印带有格式化数字的输出。String类有一个等效的类方法format(),它返回一个String对象而不是一个PrintStream对象。
使用String的静态方法format()允许你创建一个可以重复使用的格式化字符串,而不是只能使用一次的打印语句。例如,不使用−
示例
System.out.printf("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
你可以写:
String fs;
fs = String.format("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
System.out.println(fs);
字符串方法
这是String类支持的方法列表:
序号 | 方法和描述 |
---|---|
1 | char charAt(int index) 返回指定索引位置的字符。 |
2 | int compareTo(Object o) 将此字符串与另一个对象进行比较。 |
3 | int compareTo(String anotherString) 按字典顺序比较两个字符串。 |
4 | int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,忽略大小写差异。 |
5 | String concat(String str) 将指定字符串连接到此字符串的末尾。 |
6 | boolean contentEquals(StringBuffer sb) 当且仅当该String表示的字符序列与指定的StringBuffer相同时,返回true。 |
7 | static String copyValueOf(char[] data) 返回一个表示指定数组中字符序列的String。 |
8 | static String copyValueOf(char[] data, int offset, int count) 返回一个表示指定数组中字符序列的String。 |
9 | boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾。 |
10 | boolean equals(Object anObject) 将此字符串与指定的对象进行比较。 |
11 | boolean equalsIgnoreCase(String anotherString) 比较此字符串与另一个字符串,忽略大小写。 |
12 | byte[] getBytes() 使用平台的默认字符集将此字符串编码为字节序列,并将结果存储到一个新的字节数组中。 |
13 | byte[] getBytes(String charsetName) 使用指定的字符集将此字符串编码为字节序列,并将结果存储到一个新的字节数组中。 |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组中。 |
15 | int hashCode() 返回此字符串的哈希码。 |
16 | int indexOf(int ch) 返回指定字符在此字符串中第一次出现的索引。 |
17 | int indexOf(int ch, int fromIndex) 返回指定字符在此字符串中从指定索引开始的第一次出现的索引。 |
18 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出现的索引。 |
19 | int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中从指定索引开始的第一次出现的索引。 |
20 | String intern() 返回字符串对象的规范表示。 |
21 | int lastIndexOf(int ch) 返回指定字符在该字符串中最后一次出现的索引。 |
22 | int lastIndexOf(int ch, int fromIndex) 从指定索引开始向后搜索,返回指定字符在该字符串中最后一次出现的索引。 |
23 | int lastIndexOf(String str) 返回指定子字符串在该字符串中右侧出现的最后一个位置的索引。 |
24 | int lastIndexOf(String str, int fromIndex) 返回指定子串在此字符串中的最后一次出现的索引,从指定索引开始向后搜索。 |
25 | int length()返回这个字符串的长度。 |
26 | boolean matches(String regex) 判断这个字符串是否匹配给定的正则表达式。 |
27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
29 | String replace(char oldChar, char newChar) 用newChar替换当前字符串中所有出现的oldChar,返回一个新字符串。 |
30 | String replaceAll(String regex, String replacement) 用给定的替换替换该字符串中与给定正则表达式匹配的每个子字符串。 |
31 | String replaceFirst(String regex, String replacement) 用给定的替换替换该字符串中与给定正则表达式匹配的第一个子字符串。 |
32 | [String] split(String regex) 将这个字符串分割为给定正则表达式的匹配项。 |
33 | [String] split(String regex, int limit) 将这个字符串分割为给定正则表达式的匹配项。 |
34 | boolean startsWith(String prefix) 测试此字符串是否以指定前缀开始。 |
35 | boolean startsWith(String prefix, int toffset) 测试此字符串从指定索引开始是否以指定前缀开始。 |
36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,该序列是此序列的子序列。 |
37 | String substring(int beginIndex) 返回一个新的字符串,该字符串是此字符串的子字符串。 |
38 | String substring(int beginIndex, int endIndex) 返回一个新字符串,该字符串是该字符串的子字符串。 |
39 | char[] toCharArray() 将此字符串转换为新的字符数组。 |
40 | String toLowerCase() 使用默认区域设置的规则,将此字符串中的所有字符转换为小写。 |
41 | String toLowerCase(Locale locale) 使用给定的区域设置的规则,将此字符串中的所有字符转换为小写。 |
42 | String toString() 返回此对象(已经是字符串!)本身。 |
43 | String toUpperCase() 将字符串中的所有字符转换为大写,使用默认区域设置的规则。 |
44 | String toUpperCase(Locale locale) 将字符串中的所有字符转换为大写,使用给定区域设置的规则。 |
45 | String trim() 返回去除前导和尾随空格的字符串的副本。 |
46 | static String valueOf(primitive data type x) 返回传递的数据类型参数的字符串表示形式。 |