前言
Java中广泛应用的字符串由一连串的字符组成。在Java中,字符串被视为对象。
Java平台提供String类来创建和操作字符串。
创建字符串
创建字符串最直接的写法是:
String str = "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类对象后就不能对其做修改。如果必须对字符串进行不断修改的话,我们应该使用StringBuffer或StringBuilder类。
字符串长度
用来获取对象信息的方法被称为访问器方法(accessor method)。length()方法是可用于字符串的访问器方法,其返回字符串中包含的字符数量。
下面程序代码是使用String类的length()方法的例子:
Live Demo
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);
这个方法会返回一个新的字符串,其值为将string2拼接到string1后面的结果。除了用于字符串变量外,concat()方法同样也可以用在引号引起来的字符串:
"My name is ".concat("Lilei");
字符串的拼接更常见的是使用加号(+):
"Hello, " + " world" + "!"
其拼接结果为:
"Hello, world!"
我们来看一下这个程序例子:
Live Demo
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);
这样一来,我们就可以重复使用字符串变量fs,而不仅仅只是进行打印输出。
String类中的方法
下面表格中列出了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) 当且仅当此字符串与指定的StringBuffer有相同的字符序列时,才返回true。 |
7 | static String copyValueOf(char[] data) 返回字符数组所表示的字符串。 |
8 | static String copyValueOf(char[] data, int offset, int count) 返回字符串数组特定位置开始所表示的字符串。 |
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(char ch) 返回指定字符在字符串中首次出现的位置。 |
17 | int indexOf(char ch, int fromIndex) 返回指定字符从特定位置开始在字符串中首次出现的位置。 |
18 | int indexOf(String str) 返回指定字符串子串在字符串中首次出现的位置。 |
19 | int indexOf(String str, int fromIndex) 返回指定字符串子串从特定位置开始在字符串中首次出现的位置。 |
20 | String intern() 返回字符串对象的规范表示。 |
21 | int lastIndexOf(char ch) 返回指定字符在字符串中最后一次出现的位置。 |
22 | int lastIndexOf(char 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) 用字符替换字符串中的指定字符,返回替换后的新字符串。 |
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) 按指定位置提取字符序列并返回CharSequence类型对象。 |
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) 返回传递的数据类型参数的字符串表示形式。 |
关注公众号「小白轻松学编程」
更多交流,欢迎微信搜索并关注公众号「 小白轻松学编程 」!
博客里所有教程会第一时间在公众号上更新哟,扫码关注一下吧~