Java-String类学习笔记
String类位于java.lang包下,String类代表字符串,字符串是常量,它们的的值在创建后不能更改;为了支持可变的字符串,Java还为我们提供了StringBuilder和StringBuffer类。
1. String类中常用方法
a. 与索引、长度相关的方法
返回值类型 | 函数名 | 功能 |
char | charAt(int index) | 返回指定索引处的 char 值。 |
String | subString(int beginIndex,int endIndex) | 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从beginIndex 处开始,直到索引 endIndex - 1 处的字符。 |
int | indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引。 |
int | indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引。 |
int | lastIndexOf(int ch) | 返回指定字符在此字符串中最后一次出现处的索引。 |
int | lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引。 |
int | length() | 返回此字符串的长度。 |
boolean | isEmpty() | 当且仅当 length() 为 0 时返回 true。 |
注意:在执行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) | 将此 String 与另一个 String 比较,不考虑大小写。 |
byte[] | getBytes(charset charset) | 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。 |
char[] | toCharArray() | 将此字符串转换为一个新的字符数组。 |
String | toUpperCase() | 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
String | toLowerCase() | 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
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) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
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);