在Java中,String
是一个引用类型,它本身是一个class
。Java编译器对String
有特殊处理,可直接用"..."
来表示一个字符串
string s = "..."
Java字符串的一个重要特点就是字符串不可变
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true 比较地址
System.out.println(s1.equals(s2)); // true 比较值
两个字符串用==
和equals()
比较都为true
,但实际上只是Java编译器在编译期,会自动把所有相同的字符串当作一个对象放入常量池,自然s1
和s2
的引用就是相同的
s1.indexOf("l"); //从左开始遍历 返回出现第一次 'l'在其的下标
s1.lastIndexOf("l"); //从右开始遍历 返回出现第一次 'l'在其的下标
s1.startsWith("he"); //判断字符串以 "" 开始
s1.endsWith("lo"); //判断字符串以 "" 结束
//是否包含子串
s1.contains("l");
//截取
s1.substring(2); //返回 [2,:]
s1.substring(2,4); //返回 [2,4)
//去除首尾空白字符 包括: 空格, \r \n \t
s1.trim(); //并没改变字符串内容,返回了一个新的字符串
s1.isEmpty(); //是否为空, 字符串长度为0 即是空
//替换字符串
String str = "A,B,C,D";
str.replaceAll("",","); //通过正则替换
str.replace("",""); //直接替换
//分割字符串
String[] splits = str.split(",");
//拼接字符串
String[] arr = {"A","B","C"};
String join = String.join("*", arr);
/* 类型转换 */
// 其他类型 -> string
String.valueOf(123);
String.valueOf('c');
String.valueOf(true);
String.valueOf(new Object());
// string -> int
Integer.parseInt(str);
Integer.parseInt(str,16); // 按16进制转换
// string -> boolean
Boolean.parseBoolean("true");
// string -> char[]
char[] charArray = str.toCharArray();
String s = new String(charArray);