String类
String string =new String();
String string =new String("123");
String string =new String(new char[]{'1','2','3'});
常用方法
length 长度
isEmpty// 判断是否为空
charAt(1)//获取字符串下表为1的字符
equals
//字符串截取
substring(3)//截取下标3开始的字符串
substring(3,6)//截取【3,6)的字符串
concat //s1.concat(“123”) 字符串的拼接/合并
replace()//字符串中字符的替换,s1.replace(‘1’,‘2’)将字符串中1用2替换
split //将字符串按照指定字符进行分割 String s1=”1-1-1-1-111-1“ s1.split(”-“);
toUpperCase /toLowerCase //转换大小写的方法
trim //去除收尾的空格 ”1 2 3 “
toString
String.valueOf(123) String.valueOf(ture) //转换为String类型
当String s1=”123“创建string对象的时候,并没有在堆内存中开辟空间,而是在栈和方法区中的字符串常量池开辟空间。
当String s2=new String(”123”);创建对象的时候,在栈 堆 方法区的字符串常量池中都开辟了空间,
StringBuilder类
String类不可变
StringBuilder,StringBuffer可变
StringBuilder常用方法
append //增加 字符串拼接
delete //删除 delete(3,4)删除[3,4)上的字符
deleteCharAt //删除 deleteCharAt(1)删除位置在1上的字符
insert// 插入 insert(2,”3“)在2的位置插入3
replace //替换 replace(3,4,”weq“) 【3,4)的位置替换为weq
setCharAt // setCharAt(1,‘2’) 替换某个位置的字符
charAt //charAt(0) 查找某个位置的字符
substring //substring(2,3)//截取【2,3)位置的字符,返回一个String类型的字符串,对stringBuilder没有影响。
String、StringBuffer、StringBuilder区别与联系
String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。
StringBuffer类则代表一个字符序列可变的字符串,可以通过append、insert、reverse、setChartAt、setLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String
StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高。通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder
StringBuilder:JDK1.5开始 效率高 线程不安全
StringBuffer:JDK1.0开始 效率低 线程安全