1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java回顾-String/StringBuilder/StringBuffer

Java回顾-String/StringBuilder/StringBuffer

时间:2019-02-04 10:57:01

相关推荐

Java回顾-String/StringBuilder/StringBuffer

一、String的特点

1.String类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

2.String是一个final类,代表不可变字符序列

3.字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改

4.String对象的字符内容是存储在一个字符数组value[]中的。

5.常量与常量的拼接结果常量池。且常量池中不会存在相同内容的常量。这也是String低效率的原因,如果String对象频繁”改动“,会导致大量副本字符串对象存留在内存中。

6.只要其中有一个是变量,结果就在中。例如 String s3= s2+"abc"

String的两种内存解析:

String对象最好用.equals做等于比较,如果用 == 可能会有意想不到的结果,如下所示,s1、s2相等,因为它们都代表方法区字符串常量池的同一区域。而s3、s4是new出来的两块存在于中的单独区域,实际上完全不是同一个东西。

一个 类的属性如果是String类型,那它实例的属性就存在方法区中,如下图所示:

二、String常用方法

1.intlength():返回字符串的长度:returnvalue.length

2.charcharAt(int index):返回某索引处的字符returnvalue[index]

3.booleanisEmpty():判断是否是空字符串:returnvalue.length==0

4.StringtoLowerCase():使用默认语言环境,将String中的所有字符转换为小写

5.StringtoUpperCase():使用默认语言环境,将String中的所有字符转换为大写

6.Stringtrim():返回字符串的副本,忽略前导空白和尾部空白

7.booleanequals(Object obj):比较字符串的内容是否相同

8.booleanequalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写

9.Stringconcat(String str):将指定字符串连接到此字符串的结尾。等价于用“+”

10.intcompareTo(String anotherString):比较两个字符串的大小

11.Stringsubstring(int beginIndex):返回一个新的字符串,它是此字符串的从

beginIndex开始截取到最后的一个子字符串。

12.Stringsubstring(int beginIndex,int endIndex):返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。

13.booleanendsWith(String suffix):测试此字符串是否以指定的后缀结束

14.booleanstartsWith(String prefix):测试此字符串是否以指定的前缀开始

15.booleanstartsWith(String prefix,int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始

16.booleancontains(Char Sequence s):当且仅当此字符串包含指定的char值序列时,返回true

17.intindexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引

18.intindexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始

19.intlastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引

20.intlastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索

-注:indexOf和lastIndexOf方法如果未找到都是返回-1

21.Stringreplace(char oldChar,char newChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。

22.Stringreplace(Char Sequencetarget,Char Sequencereplacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

23.StringreplaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串。

24.StringreplaceFirst(String regex,String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串。

25.booleanmatches(String regex):告知此字符串是否匹配给定的正则表达式

26.String[]split(String regex):根据给定正则表达式的匹配拆分此字符串。

27.String[]split(String regex,int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中

三、String与char数组/byte数组转换

1、String 与 char[ ]

1. String -> char[ ]

-调用String的toCharArray()可选参数-截取范围

2. char[ ] -> String

-调用String的构造器

2、String 与 byte[ ]

1.编码: String -> byte

-调用String的getBytes(),可选参数-字符集

2. 解码:byte -> String

-调用String的构造器

注:解码时,解码使用的字符集必须与编码时使用的字符集一致,否则会乱码

四、StringBuffer/StringBuilder

三者对比:

-String:不可变的字符序列,底层用char[ ]存储,效率最低

-StringBuffer:可变的字符序列,线程安全,效率,底层用char[ ]存储

-StringBuilder :可变的字符序列,线程不安全,效率,底层用char[ ]存储

1.原理

底层默认初始化是大小为16的char数组,如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。默认情况下,扩容为原来容量的2倍 + 2,同时将原有数组中的元素复制到新的数组中。

2.方法

不同于String,StringBuffer类的对象必须使用构造器生成。有三个构造器:

1. StringBuffer():初始容量为16的字符串缓冲区

2. StringBuffer(int size):构造指定容量的字符串缓冲区

3. StringBuffer(String str):将内容初始化为指定字符串内容

4.append(xxx):提供了很多的append()方法,用于进行字符串拼接

5.delete(int start,int end):删除指定位置的内容

6.replace(int start,int end,String str):把[start,end)位置替换为str

7.insert(int offset,xxx):在指定位置插入xxx

8.reverse():把当前字符序列逆转

9. intindexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引

10. Stringsubstring(int start,int end) 返回一个从start到end缩阴结束的左闭右开区间的子串

11. intlength()获取长度

12. charcharAt(int n ) 返回指定位置的字符

13. voidsetCharAt(int n ,char ch) 设置指定位置的字符

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。