String类位于java.lang包下,String类代表字符串,字符串是常量,它们的的值在创建后不能更改;为了支持可变的字符串,Java还为我们提供了StringBuilder和StringBuffer类。
1. String类中常用方法
a. 与索引、长度相关的方法
返回值类型 | 函数名 | 功能 |
char | charAt(int index) | 返回指定索引处的 |
String | subString(int beginIndex,int endIndex) | 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从 |
int | indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引。 |
int | indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引。 |
int | lastIndexOf(int ch) | 返回指定字符在此字符串中最后一次出现处的索引。 |
int | lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引。 |
int | length() | 返回此字符串的长度。 |
boolean | isEmpty() | 当且仅当 |
注意:在执行subString方法时,会创建新的字符数组,而不是使用现存的字符数组。
b. 与比较、包含、转换相关的方法
返回值类型 | 函数名 | 功能 |
String | concat(String str) | 将指定字符串连接到此字符串的结尾。 |
boolean | contains(charsequence s) | 当且仅当此字符串包含指定的 char 值序列时,返回 true。 |
boolean | endWith(String suffix) | 测试此字符串是否以指定的后缀结束。 |
boolean | startsWith(String prefix) | 测试此字符串是否以指定的前缀开始。 |
int | compareToIgnoreCase(String str) | 按字典顺序比较两个字符串,不考虑大小写。 |
boolean | equalsIgnoreCase(String anotherString) | 将此 |
byte[] | getBytes(charset charset) | 使用给定的 charset 将此 |
char[] | toCharArray() | 将此字符串转换为一个新的字符数组。 |
String | toUpperCase() | 使用默认语言环境的规则将此 |
String | toLowerCase() | 使用默认语言环境的规则将此 |
c. 与正则表达式相关的方法
返回值类型 | 函数名 | 功能 |
String | matches(String regex) | |
String | replaceAll(String regex,String replacement) | 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
String | replaceFirst(String regex,String replacement) | 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
String[] | split(String regex) | 根据给定正则表达式的匹配拆分此字符串。 |
String | trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
String | replace(char oldchar,char newchar) | 返回一个新的字符串,它是通过用 |
1 public static void main(String[] args) {
2 // 去除字符串的前导空白和尾部空白
3 String str = " abc ed f ";
4 System.out.println(str);
5 System.out.println(str.trim());
6 // 将字符串用空白字符分割开来
7 String[] strArray = str.split("\\s+");
8 System.out.println(strArray.length);
9 for(String s:strArray){
10 System.out.println(s);
11 }
12 }
运行结果:
2. 题外话
a. String对象一旦创建不可改变,而StringBuilder和StringBuffer是可变的,这就表示它们创建后仍可以修改他们的值;StringBuffer是synchronized的,它是线程安全的,但是比StringBuilder慢,如无安全要求,推荐使用StringBuilder。
b. Java中字符串的连接是用“+”来实现的,此操作的过程是通过StringBuilder或StringBuffer类及它们的append方法实现。
c. 将字符串转换成日期
1 String str = "Fri 17,2013";
2 Date date = new SimpleDateFormat("MMM d,yy", Locale.ENGLISH).parse(str);
3 System.out.println(date);