String数据类型,StringBuffer以及 StringBuild

半城伤御伤魂 提交于 2019-11-30 12:22:37

 

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.5StringBuild

1.与StringBuffer具有相同的操作

2.StringBuffer是线程安全的类。StringBuild不是线程安全的类,在单线程中性能要比StringBuffrer高。

 

2.6效率:StringBuild>Stirngbuffer>String

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!