关于String源码分析

关于String的类定义:
  public final class String implements java.io.Serializable, Comparable<String>, CharSequence
  以final修饰,不可继承,不可变,其方法默认都是final的
实现 Serializable、Comparable<String>、CharSequence 三个接口。
private final char value[];string内部是一个字符数组。
常用方法:
1、int length():返回字符串长度
2、boolean isEmpty():返回字符串是否为空,判断条件是字符串长度
3、char charAt(int index):返回字符串index位置的值
4、boolean equals(Object object):重写Object类中的方法,判断过程为,先判断是否是同一对象,是就返回true;然后判断object是否为字符串类型,是就把object强转为string类型,然后判断长度是否相同,相同的话再转换为字符数组,一个一个比较
5、int indexOf(String str,int fromIndex):返回str在字符串中从指定的索引开始首次出现的位置
6、int lastIndexOf(String str,int fromIndex):返回str在字符串中从指定的索引开始最后出现的位置
7、String substring(int beginIndex):返回一个子字符串,是字符串从指定索引开始到字符串结束的子字符串
8、String concat(String str):返回一个新字符串,str拼接到字符串后面
9、String replace(char oldChar,char newChar):返回一个新字符串,字符串中旧字符被替换为新字符,并返回新字符串
10、String replaceAll(String regex,String replacement):返回一个新字符串,可与replace()相同,也可按照regex规则替换,并返回新字符串
11、String[] split(String regex):返回一个字符串数组,按照regex规则进行拆分
12、String join(CharSequence delimiter,CharSequence.. elements):java8新增功能,按照规则进行拼接字符串或数组
13、String toLowerCase()/toUpperCase():返回新字符串,把字符串中的字母转换为小/大写后返回新字符串
14、String trim():去掉收尾的空格去掉返回新字符串
15、char[] toCharArray():把字符串转换为字符数组
16、String valueOf(Object obj):(obj==null)? "null":obj.toString()
17、String intern():当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。
写在后面:
关于String对象的创建和常量池使用jdk为1.8,常量池存在于堆中,执行intern()方法时,如果存在堆中的对象,会直接保存对象的引用,而不会重新创建对象,另外StringPool的长度为1009且不可变的
posted @ 2018-09-05 19:10  love_xiaosha  阅读(98)  评论(0编辑  收藏  举报