一、String类的常用方法
1、比较字符串的内容
方法名 | 作用 |
public boolean equals(Object anObject) | 比较字符串的内容是否相同,严格区分大小写(一般用于用户名和密码) |
public boolean equalsIgoreCase(String) | 忽略大小写比较两个字符串的内容是否相等 |
2、字符串长度
方法名 | 作用 |
public int length() | 返回此字符串的长度 |
3、得到指定位置
方法名 | 作用 |
public char charAt(int index) | 返回指定索引处的 char 值 |
public int indexof(String) | 得到指定内容第一次出现的下标 |
public int lastIndexof(String) | 得到指定内容最后一次出现的小标返回索引值 |
4、改变字符串内容
方法名 | 作用 |
public String trim() | 去掉字符串首尾两端的空格 |
public String toUpperCase() | 把字符串内容全部转换为大写 |
public String toLowerCase() | 把字符串内容全部转换为小写 |
public String replace(String,String) | 把字符串内容全部替换为指定内容 |
public String replaceAll(String,String) | 把字符串内容全部替换为指定内容(正则表达式) |
5、截取字符串内容
方法名 | 作用 |
public String substring(int) | 从指定下标一直截取到字符串的末尾 |
public String substring(int a,int b) | 从下标a截取到下标b-1对应的内容 |
6、判断指定内容
方法名 | 作用 |
public boolean startswitch(String) | 判断字符串是否以指定内容开头 |
public boolean endswitch(String) | 判断字符串是否以指定内容结尾 |
二、String Builder类的常用方法
方法名 | 作用 |
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
public StringBuilder insert(int offest,任意类型) | 在指定位置插入数据,并返回对象本身 |
public StringBuilder replace() | 更改字符串的内容,替换成指定内容 |
public StringBuilder toString() | 转换成String类型 |
public StringBuilder delete() | 删除指定内容 |
public StringBuilder length() | 返回字符串长度 |
三、两者之间的关系
1、区别
String类内容不可变,String Builder类内容是可变的。
2、原因
String内容不可变的原因:
String类源码是final类,不可以继承,所以String引用的字符串内容是不能被修改,可以理解成一个封装好的数组常量。
String 有两种赋值方法
(1)直接赋值(例如:String str = “Hello”;就是直接赋值实例化了)
(2)使用new调用构造方法完成实例化;
(例如:String str = new String(“Hello”);)String 类对象内容不能改变,但是并不代表引用不能改变。
例如:如果在栈内存中创建一个引用 str, String str = “Hello”; 其中堆内存中会产生一个 Hello 地址 str = str +“World”; 意思是: 在堆内存中创建一个World 地址 然后再开辟一个 Hello World 地址 将str引用的指向改变到 HelloWorld地址 但是原来Hello的内容并没有改变,只是str的引用改变了指向。
StringBuilder内容可变的原因:
与String不同,它不是final的,可以修改。另外,与String不同,字符数组中不一定所有位置都已经被使用,它有一个实例变量 count,表示数组中已经使用的字符个数。 相当于一个内部可变数组,存在初始化StringBuilder对象中字符数组容量为16,存在扩容。