Java重修笔记 第三十二天 String类

  • String类特性

1. 一个字符占两个字节,不管是英文还是中文

2. 字符串本质是由字符数组存储的一组数据 private final char value[];

3. 通过双引号创建的字符串对象,其引用直接指向底层常量池中的地址,如果常量池没有则创建

4. 通过构造函数new创建的字符串对象,会先在堆中创建一个空间,其引用指向堆空间的对象地址,而该对象中有一个value[]属性该属性的引用才会指向底层常量池中的地址,如果常量池没有则创建

5. 两个双引号的String对象相加的情况(例如 String str =  "abc" + "def"; ),编译器会优化为一个字符串(即 String str = "abcdef"; ),所以两个双引号相加的情况只会在方法区创建一个对象

6. 当出现两个字符串常量相加的情况,会先创建一个容量为16的空的StringBuild对象,然后调用它的append方法依次传入第一个和第二个字符串,然后再调用String构造器把StringBuild变成一个全新的String字符串,所以两个字符串常量相加的情况会创建3个对象,分别是:StringBuild对象、在堆空间里的String对象和该对象value[]属性指向方法区的"abcdef"对象

7. 因为String类底层保存的是字符串常量,每次更新字符串都需要new StringBuild和new String开辟空间,所以大批量String字符串的拼接效率比较低,但用String做配置文件或表示常量的值还是很方便的

  • String类的常用方法

1. public boolean equals(Object anObject)

        区分大小写,如果是同一个对象,或者value[]内容相同,返回true,否则返回false

2. public boolean equalsIgnoreCase(String anotherString)

        不区分大小写,其余和equals方法相同

3. public int indexOf(String str, int fromIndex) 

        返回指定子串的第一次出现的str字符串中的索引,从索引fromIndex开始,找不到返回-1

4. public int lastIndexOf(String str, int fromIndex)

        返回指定子字符串的最后一次出现的str字符串中的索引,到索引fromIndex为止,找不到返回-1

5. public String substring(int beginIndex)

        返回指定索引beginIndex开始到结束的字符串

6. public String substring(int beginIndex, int endIndex)

        返回指定索引beginIndex开始到endIndex - 1的字符串,左开右闭

7. public String toUpperCase()

        将字符串转换为大写返回

8. public String toLowerCase()

        将字符串转换为小写返回

9. public String concat(String str)

        将字符串拼接在末尾后返回

10. public String replace(CharSequence target, CharSequence replacement)

        将老字符串替换为新字符串后返回,但对源字符串对象不产生影响

11. public String[] split(String regex)

        将字符串分割并返回

12. public char[] toCharArray()

        将字符串转换为字符数组

13. public int compareTo(String anotherString)

        比较两个字符串,字符串相同返回值为0,前面部分相同返回字符串长度的差值,前面部分不同返回unicode的差值

14. public static String format(String format, Object... args)

        占位符:%s是String,%d是int,%.2是double(四舍五入精确到小数点后两位),%c是char

你可能感兴趣的:(笔记)