01-API介绍

  • 介绍 : API 应用程序编程接口
    1. API帮助文档的使用流程 :
    2. 1. 在索引的位置, 搜索自己要查看的类
    3. 2. 看包
    4. 3. 看这个类的介绍
    5. 4. 看这个类的构造方法
    6. 目的: 能够根据构造方法, 正确创建出对象
    7. 5. 看这个类的成员方法(方法摘要)
    8. 1. 方法名
    9. 2. 参数
    10. 3. 返回值
    11. 4. 介绍

    02-String类的特点

    ```java
  1. Java程序中, 所有双引号字符串, 都是String这个类的对象
  2. String字符串, 一旦被创建, 就[不可改变]
    1. - 不可改变: 字符串内容不能改变, 要想做修改, 只能使用新的对象做替换.
    2. String s = "abc";
    3. s = "def";
    4. System.out.println(s); // def
  3. 字符串虽然不可改变, 但是其内容可以被共享

     - 字符串常量池: 当使用双引号创建字符串对象的时候, 会检查常量池中是否存在该数据
                     没有 : 创建
                     有 : 复用                            
                         String s1 = "abc";
                         String s2 = "abc";
                         System.out.println(s1 == s2);  // true
    
  4. 字符串和字符数组之间允许相互转换

         char[] chs = {'a','b','c'};     <----------->    String s = "abc";
    
         1. 字符串数组转换字符串
    
             String s = new String(chs);
    
         2. 字符串拆分为字符数组
    
             char[] chs = s.toCharArray();
    

    ```

    03-String类常见的构造方法

    ```java

  5. public String() : 创建一个空白的字符串对象
  6. public String(char[] chs) : 根据传入的字符数组, 来创建字符串对象
  7. public String(String s) : 根据传入的字符串, 来创建字符串对象

细节: 打印字符串对象, 为什么没有地址值?

  - TODO: 就业班 (继承, 方法重写, Object, toString())
  - 打印字符串对象名, 直接展示内容, 并非地址值.

想法: 这三种创建方式, 都没有双引号直接创建, 来的方便 String s = “abc”;

<a name="790b56cd"></a>
#### 3.1 创建字符串对象, 两种方式的区别

- 双引号直接创建 :  在字符串常量池中维护
- 通过构造方法 new 出来 : 在堆内存中有自己独立的内存地址
<a name="b7b861d6"></a>
#### 3.2 字符串面试题
```java
package com.itheima.test;
public class StringTest1 {
    /*
        String常见面试题 (看程序, 说结果, 并说明原因)
     */
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "a" + "b" + "c";

        System.out.println(s1 == s2);    //true
    }

    private static void method3() {
        String s1 = "abc";
        String s2 = "ab";
        String s3 = s2 + "c";
        System.out.println(s1 == s3);//false
    }

    private static void method2() {
        String s1 = "abc";
        String s2 = new String("abc");
        System.out.println(s1 == s2);//false
    }
    private static void method1() {
        String s1 = "abc";
        String s2 = "abc";

        System.out.println(s1 == s2);//true
    }
}

04-String类成员方法

  • 字符串中用于比较的方法 :

    public boolean equals(String anObject) : 字符串之间进行内容的比较, 返回true, false
    public boolean equalsIgnoreCase(String anotherString) : 字符串之间进行内容的比较, 返回true, false (不考虑大小写)
    
  • 字符串转字符数组的方法 :

    public char[] toCharArray() : 将此字符串转换为一个新的字符数组
    
  • 字符串用于遍历方法 :

    public char charAt(int index) : 根据索引找字符
    public int length() : 返回字符串的长度(字符的个数)
    
  • 字符串用于截取方法 :

    public String substring(int beginIndex) : 根据传入的索引, 截取字符串, 截取到字符串的末尾, 返回新的字符串
    public String substring(int beginIndex, int endIndex)  : 
                              根据传入的开始和结束索引, 截取字符串 (包含头, 不包含尾), 返回新的字符串
    
  • 字符串用于替换方法 :

    public String replace(String target, String replacement)  :
                              参数1: 旧值
                              参数2: 新值
    
  • 字符串用于切割的方法 :

    public String[] split(String regex) : 根据传入的字符串作为规则, 切割当前字符串, 并返回字符串数组.
    
              注意: 指定切割规则的时候, 如果没有按照预想的切割出数据
                      可以在规则前面, 加入 \\
    

    05-StringBuilder的介绍

  • 介绍 : 提升字符串的操作效率

    • StringBuilder是可变的字符序列
    • StringBuilder又叫做字符串缓冲区 (容器), 这个容器可以存储任意数据类型
      • 但是数据只要进入这个容器, 全部变成字符串.

        06-StringBuilder的常用构造方法

        ```java public StringBuilder() : 创建一个空白的字符串缓冲区, 其初始容量为16个字符

public StringBuilder(String str) : 创建一个字符串缓冲区 (容器), 容器在被 创建出来的时候, 就会带有参数数据.

<a name="f91f9eb4"></a>
### 07-StringBuilder的常用成员方法
```java
public StringBuilder append(任意类型) : 向缓冲区中, 添加数据, 返回
自己这个对象本身,可链式编程

public StringBuilder reverse() : 将缓冲区中的内容进行反转, 返回自己
这个对象本身

public int length()  : 返回字符的个数

public String toString()  :  将缓冲区中的内容转换为字符串, 并返回

08-String和StringBuilder的转换

1. String ---> StringBuilder

  1). 使用StringBuilder的空参构造方法, 创建对象, 调用append方法完成添加
                String s = "abc";
                StringBuilder sb = new StringBuilder();
                sb.append(s);

  2). 使用StringBuilder的带参构造方法
                String s = "abc";
                StringBuilder sb = new StringBuilder(s);

2. StringBuilder ---> String
        场景: 手里的数据是一个StringBuilder, 但是我要调用的方法, 
    StringBuilder没有, String有, 转换后再调用 !!
  1). 调用toString方法
                StringBuilder sb = new StringBuilder();
                String s = sb.toString();