1.String介绍
a.String类对象创建后不可更改,添加后会重新创建一个对象
b.String对象可以共享
c.如果只要字面值的拼接,则不会创建新对象,反之会。
2.String的API
(1)判断
public class String_test {
public static void main(String []args){
String s1 = "yzq";
String s2 = "yxc";
String s3 = "YZQ";
//判断字面值
System.out.println(s1.equals(s2));
//忽略大小写
System.out.println(s1.equalsIgnoreCase(s3));
//判断是否为子串
System.out.println(s1.contains("yzq"));
//判断是否以XX开头
System.out.println(s1.startsWith("yz"));
//判断是否以XX结尾
System.out.println(s1.endsWith("zq"));
}
}
(2)获取
public class String_test {
public static void main(String []args){
String s1 = "yzq";
//拼接
s1 = s1.concat("666");
//根据索引获取对应的字符
char c = s1.charAt(1);
//字符第一次出现的位置
System.out.println(s1.indexOf('6'));
//子串--从索引到结尾
System.out.println(s1.substring(2));
//子串--含头不含尾部
System.out.println(s1.substring(1,3));
}
}
(3)转换
package bilibili.chapter13;
import java.util.Arrays;
import java.util.Locale;
public class String_test {
public static void main(String []args){
String s1 = "yzq";
//字符串转换为字符数组
char []chars = s1.toCharArray();
for(char cc:chars){
System.out.printf("%c ",cc);
}
//替换
System.out.println(s1.replace("yzq","覆盖yzq"));
//分割
String []splits = s1.split("\\.");
System.out.println(Arrays.toString(splits));
//转为大写
System.out.println(s1.toUpperCase());
//去除开头结尾空格
System.out.println(s1.trim());
}
}
3.String、StringBuilder、StringBuffer的区别
a.String每拼接一次,会创建一个新对象,会在堆里开辟新的空间
b.StringBuilder底层自带一个缓冲区,拼接字符串后会在缓冲区里保存,节省内存
c.StringBuilder拼接效率高,但线程不安全;StringBuffer拼接效率低,但是线程安全
public class StringBuilder_test {
public static void main(String []args){
StringBuilder str = new StringBuilder();
str.append("yzq");
for(int i=0;i<str.length();i++){
str.setCharAt(i, (char) (str.charAt(i)+1));
}
System.out.println(str);
}
}