字符串String类
String类是开发中最常用的类。
1.1 String基础
- String类又称作不可变字符序列
- String位于java.lang包中,Java程序默认导入java.lang包下的所有类
- Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、‘a’、‘v’、'a’组成的
- Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。
定义String对象:
String str1 = new String("eawf");
String str2 = "safdds";
1.2 常量池
- 全局字符串常量池(String Pool):存放字符串常量的引用值
- class文件常量池(Class Constant Pool):存放常量(文本字符串、final常量等)和符号引用
- 运行时常量池(Runtime Constant Pool):每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。
1.3 String类常用方法
方法 | 解释说明 |
---|---|
char charAt(int index) | 返回字符串中第index个字符 |
boolean equals (String other) | 如果字符串与other相等,返回true;否则,返回false |
boolean equalslgnoreCase(String other) | 如果字符串与other相等(忽略大小写),则返回true;否则,返回false |
int indexOf(String str) | 返回从头开始查找第一个子字符串str在字符串中的索引位置。如果未找到子字符串str,则返回-1 |
int lastIndexOf(String str) | 返回从末尾开始查找第一个子字符串str在字符串中的索引位置。如果未找到子字符串str,则返回-1 |
int length() | 返回字符串的长度 |
String replace(char oldChar,char newChar) | 返回一个新串,它是通过newChar替换此字符串中出现的所有oldChar而生成的。 |
boolean startsWith(String prefix) | 如果字符串以prefix开始,则返回true |
boolean endsWith(String prefix) | 如果字符串以prefix结尾,则返回true |
String substring(int beginIndex) | 返回一个新字符串,该串包含从原始字符串beginIndex到串尾 |
String substring(int beginIndex,int endIndex) | 返回一个新字符串,该串包含从原始字符串beginIndex到串尾或endIndex-1的所有字符 |
String toLowerCase() | 返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母 |
String toUpperCase() | 返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母 |
String trim() | 返回一个新字符串,该串删除了原始字符串头部和尾部的空格 |
注:String是不可变字符序列。所有的替换、截取字符串、去空格、转换大小写等都是生成了新字符串。
public class demo01 {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = "abc";
String str3 = "aBc";
System.out.println(str1 == str2); //false 判断两者Unicode值
System.out.println(str1.equals(str2)); //true 判断两者的值
System.out.println(str2.charAt(0)); //返回str2第一个字符
System.out.println(str2.charAt(str2.length() - 1)); //返回str2最后一个字符
//比较字符串
System.out.println(str2.equals(str3));
System.out.println(str2.equalsIgnoreCase(str3)); //不区分大小写
//从头或从尾查找,返回第一个找到的子字符串的索引位置,若未找到,返回-1
System.out.println("abcdefg".indexOf("def")); //从头查找,结果:3
System.out.println("abcdefg".lastIndexOf("def")); //从尾查找,结果:3
//字符串替换
String str5 = "abcdabcd".replace('d','D');
System.out.println(str5); //abcDabcD,替换一个字符
String str6 = "abcdabcd".replace("cd","HELLO");
System.out.println(str6); //abHELLOabHELLO 替换一个字符串
//判断开头(结尾)是否以"..."字符串开头(结尾)
System.out.println("xsj,ababab".startsWith("xsj")); //ture
System.out.println("xsj,ababab".endsWith("xsj")); //false
//截取字符串
String str7 = "abcdefghijklmnopqrstuvwxyz".substring(6);
System.out.println(str7); //ghijklmnopqrstuvwxyz
String str8 = "abcdefghijklmnopqrstuvwxyz".substring(6,11); //6~(11-1)
System.out.println(str8); //ghijk
//大小写切换
System.out.println("abcdE".toUpperCase()); //ABCDE
System.out.println("abcdE".toLowerCase()); //abcde
//删除字符串头尾的空格
String str4 = " a b ";
System.out.println(str4.trim());
//删除字符串所有的空格
System.out.println(str4.replace(" ",""));
}
}