2.1String
String数据类型在JDK 中定义使用了final 关键字,也就是说一个String 对象一旦生成就无法改变存放在常量池中直到被GC,对String 变量重新赋值其实只是对变量的引用重新赋值,字符串内容并未改变,优点:极大的复用了相同的字符串不需要每次都去创建一个字符串对象。
2.2String 常量池
专门用来存储已经创建好的字符串常量(New的字符串存在于堆中)
常量池的位置:JDK1.6之前与方法区
JDK1.7在堆中
JDK1.8之后在元空间
2.3常见的API
1.length():字符串的长度
2.Indexof(String ch):字符串ch中第一次出现的下标位置,不包含则返回-1.
3.SubString():取子串:参数两种(int begin)
(int begin,int end)
4.char charAt(int index) :根据位置index 取字符
5.boolean Contains(String str):字符串是否包含str这个串
6.boolean startwith(String str):是否以str开头
7.boolean endwith(String str):是否以str结尾
8.Char[] toCharArray() :将字符串转换为字符数组
9.String[] str=Str.split(","); 以,为字符进行切割字符串形成字符串数组
10.+操作底层是通过StringBuffer 实现的,String对象的字符串拼接其实是被JVM解释成了StringBuffer对象的拼接,所以这些时候String对象的速度并不会比StringBuffer慢。
2.4 StringBuffer :线程安全:很多方法用了Synchronized
1.字符串缓冲区,是一个容器,长度可变,可以直接操作多个数据类型,
2.str.append(“参数”) :参数添加到str末尾
3.insert(index,数据):参数添加到str指定位置index位置上
4.删除:delete(start,end) ,删除数据:包左不包右[start,end)
5.deleteChatAt(index) ,删除数据:删除指定位置上index的字符
6.字符串反向输出:StringBuffer reverse()
7.修改:StringBuffer replace(start,end,str)指定范围替换为str
8.Void setCharAt(star,end,ch)指定范围替换为ch字符串
2.5StringBuilder
1.与StringBuffer具有相同的操作
2.StringBuffer是线程安全的类。StringBuilder不是线程安全的类,在单线程中性能要比StringBuffrer高。
2.6效率:StringBuilder>Stirngbuffer>String