一、String类
1.String类的概念
-
java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描
述,如:“abc”。 -
该类由final关键字修饰,表示该类不能被继承。
-
从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一
些空间。 -
该类描述的字符串内容是个常量不可更改,因此可以被共享使用。
如: String str1 = “abc”; - 其中"abc"这个字符串是个常量不可改变。 str1 = “123”; - 将“123”字符串的地址赋值给变量str1。 - 改变str1的指向并没有改变指向的内容
2.常量池的概念
由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量
池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。
3.常用的构造方法
方法声明 | 功能介绍 |
---|---|
String() | 使用无参方式构造对象得到空字符序列 |
String(byte[] bytes, int offset, int length) | 使用bytes数组中下标从offset位置开始的length个字节来构造对象 |
String(byte[] bytes) | 使用bytes数组中的所有内容构造对象 |
String(char[] value, int offect, int count) | 使用value数组中下标offect位置开始的count个字符来构造对象 |
String(char[] value) | 使用value数组中的所有内容构造对象 |
String(String original) | 根据参数指定的字符串内容来构造对象,新创建对象为参数对象的副本 |
4.常用的成员方法
方法声明 | 功能介绍 |
---|---|
String toString() | 返回字符串本身 |
byte[] getBytes() | 将当前字符串内容转换为byte数组并返回 |
char[] toCharArray() | 用于将当前字符串内容转换为char数组并返回 |
char charAt(int index) | 方法charAt用于返回字符串指定位置的字符 |
int length() | 返回字符串字符序列的长度 |
boolean isEmpty() | 判断字符串是否为空 |
int compareTo(String anotherString) | 用于比较调用对象和参数对象的大小关系 |
int compareToIgnoreCase(String str) | 不考虑大小写,也就是’a’和’A’是相等的关系 |
String concat(String str) | 用于实现字符串的拼接 |
boolean contains(CharSequence s) | 用于判断当前字符串是否包含参数指定的内容 |
String toLowerCase() | 返回字符串的小写形式 |
String toUpperCase() | 返回字符串的大写形式 |
String trim() | 返回去掉前导和后继空白的字符串 |
boolean startWith(String prefix) | 判断字符串是否以参数字符串开头 |
boolean endWith(String suffix) | 判断字符串是否以参数字符串结尾 |
boolean equals(Object anObject) | 用于比较字符串内容是否相等并返回 |
int hashCode() | 获取调用对象的哈希码值 |
boolean equalsIgnoreCase(String anotherString) | 用于比较字符串内容是否相等并返回,不考虑大小写,如:‘A’和’a是相等’ |
int indexOf(int ch) | 用于返回当前字符串中参数ch(ASCII码值)指定的字符第一次出现的下标 |
int indexOf(int ch, int fromIndex) | 用于从fromIndex位置开始查找ch指定的字符 |
int indexOf(String str) | 在字符串中检索str返回其第一次出现的位置,若找不到返回-1 |
int indexOf(String str, int fromIndex) | 表示从字符串的fromIndex位置开始检索str第一次出现的位置 |
int lastIndexOf(int ch) | 用于返回参数ch指定的字符最后一次出现的下标 |
int lastIndexOf(int ch, int fromIndex) | 用于从fromIndex位置开始查找ch指定字符出现的下标 |
int lastIndexOf(String str) | 返回str指定字符串最后一次出现的下标 |
int lastIndexOf(String str, int fromIndex) | 用于从fromIndex位置开始反向搜索的第一次出现的下标 |
String substring(int beginIndex, int endIndex) | 返回字符串中从下标beginIndex(包括)开始到endIndex(不包括)结束的子字符串 |
String substring(int beginIndex) | 返回字符串中从下标beginIndex(包括)开始到字符串结尾的子字符串 |
二、正则表达式
1.概念
正则表达式本质就是一个“规则字符串”,可以用于对字符串数据的格式进行验证,以及匹配、查找、替换等操作。该字符串通常使用^运算符作为开头标志,使用$运算符作为结尾标志,当然也可以省略。
2.规则
正则表达式 | 说明 |
---|---|
[abc] | 可以出现a、b、c中任意一个字符 |
[^abc] | 可以出现除了a、b、c之外的任何字符 |
[a-z] | 可以出现a、b、…、z中的任意一个字符 |
[a-zA-Z0-9] | 可以出现a-z、A-Z、0-9中任意一个字符 |
. | 任意一个字符(通常不包含换行符) |
\d | 任意一个数字字符,相当于[0-9] |
\D | 任意一个非数字字符 |
\s | 空白字符,相当于[\t\n\xOB\f\r] |
\S | 非空白字符 |
\w | 任意一个单词字符,相当于[a-zA-Z_0-9] |
\W | 任意一个非单词字符 |
X? | 表示X可以出现一次或一次也没有,也就是 0~1 次 |
X* | 表示X可以出现零次或多次,也就是 0 ~ n 次 |
X+ | 表示X可以出现一次或多次,也就是 1 ~ n 次 |
X{n} | 表示X可以出现恰好 n 次 |
X{n, } | 表示X可以出现至少 n 次,也就是 >= n 次 |
X{n, m} | 表示X可以出现至少 n 次,但是不超过 m 次,也就是 >= n 并且 <= m 次 |
3.相关方法
方法名称 | 方法声明 |
---|---|
boolean matches(String regex) | 判断当前正在调用到的字符串是否匹配参数指定的正则表达式规则 |
String[] spilt(String regex) | 参数regex为正则表达式,以regex所表示的字符串为分隔符,将字符串拆分成字符串数组 |
String replace(char oldChar, char newChar) | 使用参数newChar替换此字符串所出现的所有参数oldChar |
String replcaeFirst(String regex, String replacement) | 替换此字符串匹配给定的正则表达式的第一个子字符串 |
String replaceAll(String regex, String replacement) | 将字符串中匹配正则表达式regex的字符串替换成replacement |
三、案例
//笔试考点
//1.使用两种方式实现字符串 “12345” 转为整数 12345 并打印
String str1 = new String("12345");
//方式一:调用Integer类中的parseInt()方法即可
int ia = Integer.parseInt(str1);
System.out.println("转换出来的整数是:" + ia); //12345
//方式二:利用ASCII来实现类型转换并打印
// '1' - '0' => 1 '2' - '0' => 2 ...
int ib = 0;
for (int i = 0; i < str1.length(); i++) {
ib = ib * 10 + (str1.charAt(i) - '0'); // 1 12 123 ...
}
System.out.println("转换出来的整数是:" + ib);
//2.判断回文字符串,回文就是指正序读和反序读都一样
String s = new String("上海自来水来自海上");
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) != s.charAt(s.length() - 1 - i)) {
System.out.println(s + "不是回文!");
return;
}
}
System.out.println(s + "是回文!");
//3.编写通用代码实现字符串str1中所有“Day”出现的索引位置找到并打印出来
String s1 = new String("Good Good Study, Day Day Up!");
int pos = 0;
while ((pos = s1.indexOf("Day", pos)) != -1){
System.out.println("pos = " + pos);
pos += "Day".length();
}