提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、String
String是什么
String类代表字符串,Java程序中的所有文字(例如:“abc”)都被实现为此类的实例。
String特点
- Java程序中所有的双引号字符串,都是String类的对象。
- 字符串不可变,它们的值在创建后不能被修改。
- 虽然String的值是不可变的,但是他们可以被共享
String的构造方法
方法名 | 说明 |
---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组来创建字符串对象 |
public String(String original) | 根据传入的字符串对象来创建字符串对象 |
String s = “abc” | 直接赋值的方式创建字符串对象,内容就是abc |
三种创建字符串对象的区别:
- 使用“”双引号创建的字符串,只要字符序列相等(顺序和大小写),无论在程序代码中出现几次,JVM都只会创建一个String对象。并在字符常量池中维护
- 通过new创建的字符串对象,每一次new都会申请一个 内存空间,虽然内容相同但是地址值不同
双引号创建的字符串对象,在字符串常量池中存储,通过构造方法创建的字符串对象,在堆内存中存储
字符串比较
- 使用==比较
基本数据类型:比较的是数据值是否相同
引用数据类型:比较的是地址值是否相同
字符串常用方法
方法名 | 说明 |
---|
public boolean equals(Object anObject) | 比较字符串内容,严格区分大小写 |
public boolean equalslgnoreCase(String anOtherString) | 比较字符串内容,忽略大小写 |
public int length() | 返回此字符串的长度 |
public char charAt(int index) | 返回指定索引处的char值 |
public char[] toCharArray() | 将字符串拆分为字符数组后返回 |
public String substring(int beginIndex,int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾) |
public String substring(int beginIndex) | 从传入的索引出截取,截取到末尾,得到新的字符串 |
public String replace(CharSequence target, CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public String[] split(String regex) | 根据传入的规则切割字符串,得到字符串数组 |
二、StringBuilder
什么是StringBuilder
StringBuilder是一个可变的字符串类,我们可以将其看为一个容器
StringBuilder构造方法
方法名 | 说明 |
---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容创建一个可变字符串对象 |
StringBuilder常用的方法
方法名 | 说明 |
---|
public StringBuilder append(任意类型) | 添加数据,返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
public int length() | 返回长度 |
public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
StringBuffer
StringBuffer是什么?
一个线程安全的可变字符串
StringBuffer构造方法
方法名 | 说明 |
---|
public StringBuffer | 创建一个容量为16的StringBuffer对象 |
public StringBuffer(int capacity | 创建一个容量为capacity 的StringBuffer对象 |
public StringBuffer(String str) | 创建指定字符串内容的字符串。末尾添加16字符容量 |
public StringBuffer(CharSequence seq) | 创建指定字符串内容的字符串,末尾添加16字符容量 |
StringBuffer常用的方法
方法名 | 说明 |
---|
public StringBuffer append(任意类型) | 添加数据,返回对象本身 |
public char charAt() | 返回指定位置的chat值 |
public int capacity() | 返回容量 |
public String toString() | 通过toString()就可以实现把StringBuffer 转换为String |
三者相互转换
- String、StringBuffer之间相互转换
public StringBuilder(String s):
public String toString():
- String、StringBuilder之间相互转换
public StringBuffer(CharSequence seq);
public String toString():
区别
- 基本区别:
String的对象不可变,StringBuffer和StringBuilder的对象是可变的 - 性能区别:
操作少量的数据用:String;
单线程操作字符串缓冲区下操作大量数据:StringBuilder
多线程操作字符串缓冲区 下操作大量数据:StringBuffer - 线程安全 :
String、StringBuffer是线程安全的,StringBuilder是线程不安全的(所以如果程序是单线程的使用StringBuilder效率高,如果是多线程使用StringBuffer或者String)