Java Learn(十)

String类、StringBuilder类、StringBuffer类

String类(重中之重)

常用的方法

  1. 常用的构造方法

    String() - 使用无参的形式创建空对象,该对象中没有字符串内容。

    String(byte[] bytes) - 根据参数指定的数组内容来构造字符串对象。

    String(byte[] bytes, int offset, int length)

    - 根据参数指定数组中从offset位置开始供length字节的数据来构造对象。
    

    String(char[] value) - 根据参数指定的字符数组构造对象。

    String(char[] value, int offset, int count) - 使用数组中的一部分构造对象。

    String(String original) - 根据字符串内容来构造对象。

    String(StringBuffer buffer) - 将StringBuffer类型转换为String类型。

    String(StringBuilder builder) - 将StringBuilder类型转换为String类型。

  2. 常用的普通方法

    该类中重写了equals()hashCode()以及toString()方法。

    char charAt(int index) - 用于获取当前字符串中下标为index位置的单个字符并返回。

    int length() - 用于返回当前字符串的长度,也就是字符的个数。

    int compareTo(String anotherString)

    • 用于比较调用对象和参数对象的字符串大小关系并返回。

    • 使用当前字符串中第一个字符起的每个字符减去参数字符串中对应位置的字符

      若第一个字符不相等则可以代表字符串大小关系,若相等则使用下一个字符继续比较

    • 若存在的字符都相同时,则大小取决于长度。

    int compareToIgnoreCase(String str)

    • 用于比较调用对象和参数对象的字符串大小关系并返回。

    • 不考虑大小写,也就是'A'和'a'在该方法中认为是相等的关系。

如:

"abc" 和 "bcd"比较大小:由于第一个字符'a'小于'b',因此字符串"bcd"比较大;

"abc" 和 "abd"比较大小:由于前两个字符相等,第三个字符'c'小于'd',因此"abd"大;

"abc" 和 "abcd"比较大小:由于前面字符相等,则大小取决于字符创长度,因此"abcd"大

boolean contains(CharSequence s) - 用于判断调用对象中是否包含参数指定的内容。

  • 其中参数是接口类型的引用,因此实参的传递有两种方式:

        a.创建实现类的对象作为实参传递,而String类就是该接口的实现类;
    
        b.使用匿名内部类来创建接口类型的对象作为实参传递;
    

    boolean endsWith(String suffix)- 用于判断当前字符串中是否以参数指定的内容为结尾;

    boolean startsWith(String prefix)- 用于判断当前字符串中是否以参数指定的内容为开头;

    String toLowerCase() - 用于将当前字符串中所有的字符转换为小写并返回;

    String toUpperCase() - 用于将当前字符串中所有字符串转换为大写并返回;

    String trim() - 用于去除当前字符串中两端的空白字符并返回;

    boolean equals(Object anObject) - 用于比较字符串内容是否相等并返回;

    boolean equalsIgnoreCase(String anotherString) - 用于比较字符串内容是否相等并返回,不考虑大小写,如:'A'和'a'是相等。

    byte[] getBytes() - 用于将当前字符串内容转换为byte数组并返回。

    char[] toCharArray() - 用于将当前字符串内容转换为char数组并返回。

    int indexOf(int ch) - 用于返回当前字符串中参数ch指定的字符第一次出现的下标。

    int indexOf(int ch, int fromIndex) - 用于从fromIndex位置开始查找ch指定的字符。 - 上述方法若查找失败,则返回-1.

    int indexOf(String str) - 用于查找参数str指定的字符串并返回下标。

    int indexOf(String str, int fromIndex) - 用于从fromIndex位置开始查找。

    int lastIndexOf(int ch) - 用于返回参数ch指定的字符最后一次出现的下标。

    int lastIndexOf(int ch, int fromIndex)- 用于从fromIndex位置开始查找ch指定字符出现的下标,反向搜索的第一次。

    int lastIndexOf(String str) - 用于返回str指定字符串最后一次出现的下标。

    int lastIndexOf(String str, int fromIndex) - 用于从fromIndex位置开始反向搜索的第一次。

    String substring(int beginIndex) - 用于获取当前字符串中从beginIndex位置开始的子字符串并返回。

    String substring(int beginIndex, int endIndex)- 用于获取当前字符串中从beginIndex位置开始到endIndex结尾的子字符串并返回。

StringBuilder类和StringBuffer类

StringBuffer类

基本概念
  1. 由于String类描述的字符序列是不可更改的,当程序中需要使用大量类似的字符串时就得分别申请空间存储,此时就会对内存空间的消耗比较大,巍峨节省空间希望直接对字符序列本身进行修改,则可以使用StringBuilder类和StringBuffer类取代之。
  2. StringBuffer类从jdk1.0开始存在,属于线程安全的类,因此效率比较低;
  3. StringBuilder类从jdk1.5版本开始存在,属于非线程安全类,因此效率高(推荐使用)。

StringBuilder类

基本概念

java.lang.StringBuilder类用于可变的字符序列,而且不保证线程安全;

常用方法

StringBuilder(String str) — 根据参数指定字符串构造对象,初始容量:16+字符串的长度

StringBuilder insert(int offset,String str) — 将str插入到当前字符串中offset指向的位置上;

StringBuilder append(String str)— 将str插入到当前字符串的末尾位置;

StringBuilder delete(int start ,int end)— 将当前字符串中从start(包含)开始到end(不包含)之间的内容移除;

StringBuilder replace(int start , int end , String str)— 将当前字符串中start到end之间的内容全部用str的内容替换;

StringBuilder reverse()— 实现字符串的反转;

StringBuilder substring()

StringBuilder indexOf()

int capacity()— 用于获取容量并返回

int length()— 用户返回字符串的长度

该类只重写了toString()方法;