String
-
所属:java.lang.String
-
特性:
-
无法被继承,String类由final关键字修饰
-
对象无法被修改,底层实际封装的是一个字符数组,此数组也由final修饰
-
由于采用Unicode编码格式,所以底层char数组中每个字符占2个字节内存空间
-
一旦对String字符串内容进行修改,实质是创建了一个新的字符串对象,然后将字符串的引用指向了新对象
-
-
常用方法:
-
length():获取字符串的长度
String str="我爱Java"; int len=str.length();
-
trim():去除当前字符串两边的空白字符
String str=" hello world "; str=str.trim();
-
toUpperCase()/toLowerCase():将当前字符串中的英文字母转换为全大写/全小写
String str="我爱Java!" String upper=str.toUpperCase(); String lower=str.toLowerCase();
-
startsWith()/endsWith():判断字符串是否是以给定的字符开始/结束的
String str="thinking in java"; boolean starts=str.startsWith("think"); boolean ends=str.endsWith(".png");
-
charAt():返回字符串指定位置字符
String str="thinking in java"; char c=str.charAt(9);
-
indexOf()/lastIndexOf():查找给定字符串在当前字符串中第一次/最后一次出现的位置
String str="thinking in java"; int index=str.indexOf("in"); int index=str.indexOf("in",3);//下标为3 int index=str.indexOf("abc");//不存在,返回-1 int index=str.lastIndexOf("in");
-
substring():截取当前字符串指定范围的字符串[start,end)
String str="www.tedu.cn"; String name=str.substring(str.indexOf(".")+1,str.lastIndexOf(".")); String name=str.substring(4);//下标4--最后
-
valueOf():将其他数据类型转换为String类型
int a=123; String s=String.valueOf(a);
-
StringBuilder
-
所属:java.lang.StringBuilder
-
特性:
-
此类为了弥补String的无法修改字符串缺憾,专门用来修改字符串,内部维护一个可变长的字符数组,对字符串对象进行修改,实质是对原有对象进行修改,大的提高了效率
-
内部提供对数组元素进行操作的方法(增、删、改、插)
-
-
常用方法:
-
append():在给定数组末尾追加字符串
String str="abc"; StringBuilder builder=new StringBuilder(str); builder.append("def");//"abcdef"
-
delete():删除[start,end)之间的字符串
String str="abcdef"; StringBuilder builder=new StringBuilder(str); builder.delete(0,3)//"def"
-
replace():替换[start,end)之间的字符串
String str="abcdef"; StringBuilder builder=new StringBuilder(str); builder.replace(3,7,ghi);//"abcghi"
-
insert():在给定位置插入字符串
String str="abef"; StringBuilder builder=new StringBuilder(str); builder.insert("cd");//"abcdef"
-
toString():将其他类型转换为String类型
String str="abc"; StringBuilder builder=new StringBuilder(str); String str1=builder.toString();
-
StringBuilder和StringBuffer区别
-
本质:都是对String不便于修改的扩展,本质上都是对字符串进行修改,底层都维护一个可变长的字符数组
-
区别:
-
StringBuilder:非线程安全,并发处理(同时一起执行),性能快(一般都使用此方法)
-
StringBuffer:线程安全,同步处理(一个执行完再下一个),性能稍慢
-