1.String类是一种引用类型的java类
public final class String implements java.io.Serializable,Comparable<String>,
CharSequence{
}
2.java编译器对String有特殊处理,允许可以直接用"..."来表示字符串:
String s1="...";
String s2="hello";
3.java中String字符串内部是通过一个char[ ]数组表示的,但是java在表示方法中提供了"..."表示方式。
String s=new String(new char[]{'h','e','l','l','o','!'});
4.字符串有一个特别特别特别重要的特点就是字符串不可以变。这是因为String类是通过private final char[ ]来实现的,并且没有任何修改char[ ]的方法实现。
public class Main{
public static void main(String[] args){
String s="hello";
System.out.println(s);
//s未指向新的字符串
s.toUpperCase();
System.out.println(s);
//s重新指向新的字符串
s=s.toUpperCase();
System.out.println(s);
}
}
字符串比较
字符串内容比较必须使用equals(),不能使用==关系运算符。
public class Main{
public static void main(String[] args){
String s1="hello";
String s2="HELLO".toLowerCase();
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
s1与s2内容相同但是==却显示false。所以两个字符串比较必须使用equals()方法。忽略大小写比较使用equalsIgnoreCase()方法。
String常用的搜索方法
indexOf(),从字符串首部进行搜索,当前字符串中指定字符串的下标位置,返回int类型。如果存在,则返回该子字符串的下标位置,如果不存在,则返回-1。
lastIndexOf(),从字符串尾部进行搜索,返回值与indexOf()一样;
startWith()和endsWith()方法是用来判断字符串是否以指定字符串开头或结尾,返回boolean类型
contains()方法用于查找当前字符串是否存在指定子字符串,返回值为boolean类型
"hello".indexOf("l");//2
"hello".lastIndexOf("l");//3
"hello".startWith("he");//true
"hello".endsWith("lo");//true
"hello".contains("lo");//true
截取字符串:使用substring()方法从当前字符串中,截取指定下标的子字符串。
"这是乔治".substring(2);//乔治
"这是乔治".substring(0,2);//这是
去除首尾空白字符串:使用trim()方法移除字符串首尾空白字符。空白字符包括,\t,\r,\n;
"\thello\r\n".trim();//返回hello
替换字符串
1.根据字符或字符串替换
String s="hello";
s.replace('l','w');//hewwo
s.replace("ll","$");//he$o
2.通过正则表达式替换
String s="A,,B.C";
s.replaceAll("[\\,\\.]+"," ");//"A B C"
分割字符串:使用split()方法,并且传入正则表达式
public class demo10 {
public static void main(String[] args) {
String city= "湖南#湖北#南京#北京#呼和浩特#乌鲁木齐";
// 使用\\#;#在正则表达式子无特殊含义所以可以不加\\
String[] m=city.split("#");
System.out.println(Arrays.toString(m));
输出为:湖南,湖北,南京,北京,呼和浩特,乌鲁木齐
拼接字符串:使用join()
String[] arr={"A","B","C"};
String s=String.join("#",arr);
输出为:A#B#C
格式化字符串:使用format()
String s="Hi %s,your score is %d!";
System.out.println(s.format("Alice",80));//字符串对象调用
System.out.println(String.format("Hi %s ,your score is %2.f!","Bob",59.5));//字符串调用