1.常见方法
1.1.String的构造
String类提供的构造方法很多,常见的有以下三种。
//使用常量字符串构造
String s1 = "hello world";
//使用new String()构造
String s2 = new String("hello world");
//使用字符串数组构造
char[] array = {'h', 'e', 'l', 'l', 'o'};
String s3 = new String(array);
需要注意的是String是引用类型,内部并不储存字符串本身,而是储存字符串的地址。
1.2.String的比较
以下介绍四种比较的方法。
1.2.1.==
在引用类型中,使用==可以比较两个该类型变量引用的是否是同一个对象。
String s1 = "hello";
String s2 = "hello";
String s3 = s1;
System.out.println(s1 == s2);//false
System.out.println(s1 == s3);//true
1.2.2.equals
使用.equals可以根据字典序来比较字符串,会返回true或false.
String s1 = "hello";
String s2 = "hello";
String s3 = "world";
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//false
1.2.3.compareTo
比较时也是根据字典序进行比较,当遇到不同字符时,返回不同字符之间的差值。当两个字符串长度不同时,如果长度小的字符串比较完之后每个字符相同,则会返回这两个字符串长度的差值。当相同时,返回0;
String s1 = "abc";
String s2 = "adc";
String s3 = "abc";
String s4 = "ab";
System.out.println(s1.compareTo(s2));//2
System.out.println(s1.compareTo(s3));//0
System.out.println(s1.compareTo(s4));//1
1.2.4.compareToIgnoreCase
比较方式与compareTo相同,但是忽略大小写。
1.3.String的查找
char charAt(int index) 返回index位置上的字符,若index为负数或越界,则抛出异常。
int indexOf(char ch) 返回ch第一次出现的位置,没有则返回-1.
int indexOf(char ch, int fromIndex) 从fromIndex位置开始找ch第一次出现的位置,没有则返回-1.
int intdexOf(String str) 返回str第一次出现的位置,没有则返回-1.
int indexOf(String str, int fromIndex) 从fromIndex位置开始找str第一次出现的位置,没有则返回-1.
int lastIndexOf(char ch) 从后往前找,返回ch第一次出现的位置,没有则返回-1。
int lastIndexOf(char ch, int fromIndex) 从后往前找,从fromIndex位置开始找ch第一次出现的位置,没有则返回-1.
int lastIndexOf(String str) 从后往前找,返回第一次出现str的位置,没有则返回-1。
int lastIndexOf(String str, int fromIndex) 从后往前找,从fromIndex位置开始找str第一次出现的位置,没有则返回-1,
1.4.转化
1.4.1.数值与字符串
//数值转字符串
String s1 = String.valueOf(1234);
String s2 = String.valueOf(12.34);
//字符串转数值
int n1 = Integer.parseInt("1234");
double n2 = Double.parseDouble("12.34")
1.4.2. 大小写转化
String s1 = "hello";
String s2 = "HELLO";
System.out.println(s1.toUpperCase());//转大写
System.out.println(s2.toLowerCase());//转小写
1.4.3.字符数组与字符串
String s1 = "hello";
//字符串转字符数组
char[] ch = s1.toCharArray();
//字符数组转字符串
String s2 = new String(ch);
1.5.字符串替换
使用一个新的字符串数据替换已有的字符串数据,两种方法如下。
String replaceAll(String regex, String replacement) 替换所有指定内容
String replaceFirst(String regex, String replacement) 替换首个指定内容
1.6.字符串拆分
String[] split(String regex) 将字符串全部拆分。
String[] split(String regex, int limit) 将字符串以指定的格式,拆分为limit组。
注意事项:
1.字符"|","*","+"都得加上转义字符,前面加上"\\"。
2.如果是"\",则要写成"\\\"。
3.如果一个字符串有多个分隔符,可以用"|"作为连字符。
1.7.字符串的截取
String substring(int beginIndex) 从指定索引截取到结尾。
String substring(int beginIndex, int endIndex) 截取部分内容。
注意事项:
1.索引从0开始。
2.注意前闭后开区间的写法,substring(0, 5)表示包含0号下标,不包含5号下标。
2.StringBuffer和StringBuilder
由于String类是不可修改的,当我们想要修改时,编译器会创建很多个String类,导致效率下降很多,此时我们就可以使用StringBuilder。StringBuilder大部分方法与String相同,下面介绍两种不同的方法。
StringBuffer append(String str) 在尾部追加字符串。
String toString() 将StringBuffer类转化为String类。
注意事项:
1.String变为StringBuilder类:利用StringBuilder的构造方法或append()方法。
2.StringBuilder类变为String类:调用toString()方法。
String, StringBuffer, StringBuilder的区别
1.String的内容不可修改,StringBuffer与StringBuilder的内容可以修改。
2.StringBuffer与StringBuilder大部分功能相似的。
3.StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。