String 类
- 创建字符串
常见构造String的方式
1> String str=“Hello Bit”;
2> String str2=new String(“Hello Bit”);
3> Char []array={‘a’,’b’,’c’};
String str3=new String(array); - 字符串比较相等
== 比较的是对象的身份(比较两个引用中保存的地址是否相同/比较两个引用是否指向同一个对象)
equals方法 比较的是两个字符串之间的内容 - 字符串常量池
池是一种重要的思想方法,把一些经常频繁使用对象提前创建并保存起来,以备随时去使用。 - 理解字符串不可变
字符串是一种不可变对象,它的内容不可改变
String内部持有的char[]value数组的内容不能在类外部发生改变
好处:方便的放到池中、hashCode也不可变、线程安全更有保证 - 字符数组、字节数组、字符串之间的相互转换
字符数组/字节数组=>String 使用string的构造方法即可
String=>字符数组 toCharArray (得到了一个新的字符数组)
String=>字节数组 getBytes (得到了一个新的字节数组) - 字符串常见操作
6.1 字符串比较大小
在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,该数据会根据大小关系
返回三类内容: - 相等:返回0.
- 小于:返回内容小于0.
- 大于:返回内容大于0.
compareTo()是一个可以区分大小关系的方法,是String方法里是一个非常重要的方法。
字符串的比较大小规则, 总结成三个字 “字典序” 相当于判定两个字符串在一本词典的前面还是后面. 先比较第一个字符的大小(根据 unicode 的值来判定), 如果不分胜负, 就依次比较后面的内容.
6.2 字符串查找
Public Boolean contains(CharSequece s) 判断一个子字符串是否存在
Public int indexOf(String str) 从头开始查找指定字符串的位置,查找了返回位置的开始索引,如果差不到返回-1
Public int indexOf(String str,int fromIndex) 从指定位置开始查找子字符串位置
Public int lastIdexOf(String str) 由后向前查找子字符串位置
Public int lastIdexOf(String str,int fromIdex) 从指定位置由后向前查找
Public boolean startWith(String prefix)判断是否以指定字符串开头
Public boolean startWith(String prefix,int toffset) 从指定位置开始判断是否以指定字符串开头
Public boolean endsWith(String suffix) 判断是否以指定字符串结尾
6.3 字符串替换
Public String replaceAll(String regex,String replacement) 替换所有的指定内容
Public String replaceFirst(String regex,String replacement) 替换首个内容
6.4 字符串的拆分
Public String[] split(String regex) 将字符串全部拆分
Public String[] split(String regex,int limit) 将字符串部分拆分,该数组长度就是limit极限
6.5 字符串截取
Public String substring (int beginIndex) 从指定索引截取到结尾
Public String substring(int beginIndex,int endIndex) 截取部分内容
7 StringBuffer和StringBuilder
通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。
StringBuffer 和 StringBuilder 大部分功能是相同的
在String中使用"+"来进行字符串连接,但是这个操作在StringBuffer类中需要更改为append()方法.
String和StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StingBuffer。
注意:String和StringBuffer类不能直接转换。如果要想互相转换,可以采用如下原则:
String变为StringBuffer:利用StringBuffer的构造方法或append()方法
StringBuffer变为String:调用toString()方法。
除了append()方法外,StringBuffer也有一些String类没有的方法:
字符串反转:
删除指定范围的数据:
插入数据
请解释String、StringBuffer、StringBuilder的区别:
String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
StringBuffer与StringBuilder大部分功能是相似的
StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作