5. 字符串
5.1 java.lang 类 String
- 字符串是常量,它们的值在创建之后不能更改。
- 底层是由数组实现:private final char value[]; 由final修饰,只能赋一次值。
- 多个字符组成的一串数据。
- 字面值作为字符串对象(变量指向main方法区)和通过构造方法创建对象(变量指向堆内存,堆内存再指向main方法区)的不同。
String s = new String("hello"); 和String s = "hello"不同。
具体方法
构造方法 byte[]
, char[]
- public String():初始化一个新创建的 String 对象,使其表示一个空字符序列。
- public String(byte[] bytes):通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。注意这个得到了是数字对应的字符,A-Z 65-90,a-z 97-122。
- public String(byte[] bytes,int offset,int length):通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
- public String(char[] value):通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
- public String(char[] value,int offset,int count):分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
- public String(String original):初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列。
判断方法 contains
, equals
, equalsIgnoreCase
, startsWith
, endsWith
, isEmpty
- boolean contains(String str):当且仅当此字符串包含指定的 char 值序列时,返回 true。
- boolean equals(Object obj):将此字符串与指定的对象比较。
- boolean equalsIgnoreCase(String str):将此 String 与另一个 String 比较,不考虑大小写。
- boolean startsWith(String str):测试此字符串是否以指定的前缀开始。
- public boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
- boolean endsWith(String str):测试此字符串是否以指定的后缀结束。
- boolean isEmpty():当且仅当 length() 为 0 时返回 true。
- public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
获取方法 length
, charAt
, indexOf
, substring
, split
- int length():返回此字符串的长度。
- char charAt(int index):返回指定索引处的 char 值。
- int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
- int indexOf(int ch,int fromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
- int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。
- int indexOf(String str,int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
- public int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。
- public int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。
- String substring(int start):返回一个新的字符串,它是此字符串的一个子字符串。
- String substring(int start,int end):返回一个新字符串,它是此字符串的一个子字符串。
- public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
- public String[] split(String regex,int limit):根据匹配给定的正则表达式来拆分此字符串。limit 参数控制模式应用的次数,因此影响所得数组的长度。
转换方法 getBytes
, toCharArray
, valueOf
, toLowerCase
, toUpperCase
- byte[] getBytes(): 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
- char[] toCharArray():将此字符串转换为一个新的字符数组。
- static String valueOf(char[] chs):返回 char 数组参数的字符串表示形式。
- static String valueOf(int i):返回 int 参数的字符串表示形式。
- String toLowerCase():使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
- String toUpperCase():使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
- String concat(String str):将指定字符串连接到此字符串的结尾,用‘+’即可。
替换功能 replace
- String replace(char old,char new):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
- String replace(String old,String new):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
其他方法 trim
- String trim(): 返回字符串的副本,忽略前导空白和尾部空白。
- int compareTo(String str):按字典顺序比较两个字符串。
- int compareToIgnoreCase(String str):按字典顺序比较两个字符串,不考虑大小写。
5.2 java.lang 类 StringBuffer
- 线程安全的可变字符序列。
- private transient char[] toStringCache;底层由可变数组实现。
- StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。
具体方法
构造方法
- StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
- StringBuffer(int capacity):构造一个不带字符,但具有指定初始容量的字符串缓冲区。
- StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
添加方法 append
, insert
- public StringBuffer append(String str):将指定的字符串追加到此字符序列。其中String可以是其余数据类型。
- public StringBuffer insert(int offset, String str):将字符串插入此字符序列中。
删除方法 delete
- public StringBuffer delete(int start, int end):移除此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符。
- public StringBuffer deleteCharAt(int index):移除此序列指定位置的 char。此序列将缩短一个 char。
替换方法 replace
- public StringBuffer replace(int start, int end, String str):使用给定 String 中的字符替换此序列的子字符串中的字符。
反转方法 reverse
- public StringBuffer reverse():将此字符序列用其反转形式取代。
获取方法 substring
, toString
- public String substring(int start):返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
- public String substring(int start, int end):返回一个新的 String,它包含此序列当前所包含的字符子序列。
- public String toString():返回此序列中数据的字符串表示形式。
5.3 java.lang 类 StringBuilder
- 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。
- 在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。
- 如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
具体方法(与StringBuffer相同)
5.4 综合比较
String
提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。StringBuilder
(或 StringBuffer
)类及其 append 方法实现的。字符串转换是通过 toString 方法实现。- 比较
String
与StringBuffer
或StringBuilder
的不同
StringBuffer
和StringBuilder
长度和内容可变,做字符串的拼接不会浪费太多的资源。
StringBuffer
:同步的,数据安全,效率低。
StringBuilder
:不同步的,数据不安全,效率高。
转载于:https://www.cnblogs.com/Stephanie-boke/p/11515198.html