一.String常用方法

  • 创建String对象

    1
    2
    3
    String s1 = "banana";
    String s2 = new String();
    String s3 = new String("banana");
  • 常用方法

    String类常用方法

  • 补充说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //substring方法的参数可以理解为指针移动的次数
    //下面结果截取了"github"
    “ba-nana.github.io”.substring(8,14);

    //从指定位置处开始用indexOf查找
    //下面从"github"的't'前开始查找第一个'i'
    “ba-nana.github.io”.indexOf('i',10)

    //字符串与byte数组互相转换
    //1字节=8位,1个中文字符=3字节,转换为字节后保存在字节数组中
    String str = new String("banana好帅");
    byte[] arrs = str.getBytes();
    String str1 = new String(arrs);

二.“=”与equals方法

  • “=”比较的是地址,equals比较的是内容

    1
    2
    3
    4
    5
    6
    7
    8
    String str1 = "banana";
    String str2 = "banana";
    String str3 = new String("banana");

    str1==str2
    //上一行结果为true
    str1==str3
    //上一行结果为false
  • 解释

    • “栈”:存放类的引用

    • “常量池”:存放字符串常量

    • “堆”:存放用new创建的字符串对象

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      String str1 = "banana";
      //此时栈中会生成str1引用,并指向常量池中的"banana"

      String str2 = "banana";
      //此时栈中会生成str2引用,由于常量池中已经有相同字符串,直接指向该字符串

      String str3 = new String("banana");
      //此时栈中会生成str3引用,堆中创建对象,str3指向堆中对象

      String str4 = new String("banana");
      //此时栈中会生成str4引用,堆中依旧会创建新对象,str4指向堆中新建的对象

三.StringBuilder

  • String与StringBuilder的区别

    • String具有不可变性,而StringBuilder不具备
    • 频繁操作字符串时可使用StringBuilder
  • StringBuilder和StringBuffer

    • 两者很相似
    • StringBuffer线程安全,而StringBuilder没有,因此性能较好
  • StringBuilder常用方法

    方法 说明
    StringBuilder append(参数) 追加内容到当前StringBuilder对象末尾
    StringBuilder insert(位置,参数) 将内容插入到指定位置
    String toString() 将对象转换为String对象
    int length() 获取字符串长度
    delete(int start, int end) 删除指定位置内容

以上内容简单总结了Java字符串常用知识点,要多回顾这些基础内容,温故而知新。