1、String的常用方法

方法 说明
int length() 返回当前字符串的长度
int indexOf(int ch) 查找ch字符在该字符串中首次出现的位置 ,找不到返回-1
int indexOf(String str) 查找str子字符串在该字符串中第一次出现的位置
int lastIndexOf(int ch) 查找ch字符在该字符串中最后一次出现的位置
int lastIndexOf(String str) 查找str子字符串在该字符串中最后一次出现的位置
String subString(int beginIndex) 获取从指定索引处开始到结束的子字符串
String subString(int beginIndex,int endIndex) 获取从指定索引处开始,指定索引处结束的子字符串 [beginIndex,endIndex)
String trim() 返回移除字符串前后两端的空格的字符串
boolean equals(Object obj) 将字符串与指定对象比较
String toLowerCase() 将字符串转换为小写
String toUpperCase() 将字符串转换为大写
char charAt(int index) 返回字符串指定索引位置处的字符,该操作subString()也能做
String[] split(String regex,int limit) 将字符串分割为子字符串数组
bytep[] getBytes() 将该字符串转为byte数组
indexOf(int ch,int fromIndex) 从指定索引位置处开始查找指定字符

栈:用来存放类的引用的
堆:存放用new 创建的字符串对象 常量池:存放字符串常量

2、String的不可变性

  • String对象一旦创建,则不能修改,是不可变的
  • 所谓的修改其实是创建了新的对象,所指向的内存空间不变

    3、StringBuilder

  • String和StringBuilder的区别

    • String具有不可变性,而StringBuilder不具备
  • 建议:当频繁操作字符串的时候,使用StringBuilder
  • StringBuilder和StringBuffer,二者基本相似。
  • StringBuffer是线程安全的,StringBuilder则没有,所以性能高。
  • 大部分情况下,我们在进行字符串处理的时候都是单线程,也就是在一个线程的情况下。线程安全主要指的是多线程的情况下,在单线程的情况下,都是使用StringBuilder。
  • StringBuilder的构造方法 | 方法 | 说明 | | —- | —- | | StringBuilder() | 在初始化空串的时候,会初始化一个16个字符长度的容量 | | StringBuilder(CharSequence seq) | 创建并指定内容 | | StringBuilder(int capacity) | 创建并指定容量 | | StringBuilder(String str) | 创建并指定内容 |

  • StringBuilder的成员方法

    • append :在末尾追加元素
    • insert :在指定位置处追加元素
    • replace:替换某个位置处的子串