String类

  • 字符串一旦初始化就不可以被改变。
  • String实现了Serializable接口,是不可变的字符序列;底层使用char[]存储
  • 实现了Comparable接口:表示String可以比较大小
  • String内部定义了final char[] value用于存储字符串数据




    字符串常量池
    String - 图1

    由于s和s1都指向了同一个字符串对象,则s==s1




    以下两句话的区别:

  • String str1=”abc”; //在字符串常量池中创建了字符串对象,然后指向了str1这个变量。

  • Strings str2=newString(“abc”); //在堆内存中创建了字符串对象,然后引用指向了str2变量




    字符串方法之获取

    String - 图2
    String - 图3

    字符串方法之转换

    String - 图4
    String - 图5

    字符串方法之判断

    String - 图6

compareTo() 方法

compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。

该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较。


String - 图7

如果是字符串之间的比较,那么小于参数返回小于0的值,反之同理。


Intern()方法

返回字符串对象的规范化表示形式。
一个初始为空的字符串池,它由类string私有地维护。

当调用intern方法时,如果池己经包含一个等于此String对象的字符串(用equals(Object)方法确定),则返回池中的字符串。否
则,将此string对象添加到池中,并返回此String对象的引用。

String - 图8


StringBuffer

  • StringBuffer代表可变的(可变长度)字符序列
  • StringBuffer可以对字符串内容进行增删等修改操作,此时不会产生新的对象,返回的对象依旧是当前的StringBuffer类型
  • StringBuffer是一个线程安全的字符串序列,对应的效率有点低,所以引出StringBuilder



    构造函数

  • stringBuffer():构造一个其中不带字符的字符串缓冲区,初始容量为16个字符。

  • StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。


其增删改查的方法,任何操作之后会将该缓冲区对象进行返回(除某些特殊方法,如setLength,其方法返回数据类型是void)
String - 图9

补充:而StringBuilder跟StringBuffer类似,只不过StringBuilder是线程不安全的,当然效率也会更快些,具体用哪个的话,看是否有涉及到线程操作。