String:
一, 定义
1. 字符串, 声明为 final 的, 不可被继.
2. 实现了 Serializable 接口: 表示字符串是支持序列化的.
实现了 Comparable 接口: 表示 String 可以比较大小
二, 特性
1.String 的不可变性
1. 当对字符串重新赋值时, 需要重写指定内存区域赋值, 不能使用原有的 value 进行赋值.
2. 当对现的字符串进行连接操作时, 也需要重新指定内存区域赋值, 不能使用原有的 value 进行赋值.
3. 当调用 String 的 replace() 方法修改指定字符或字符串时, 也需要重新指定内存区域赋值, 不能使用原有的 value 进行赋值.
2.String 实例化的不同方式
方式一: 通过字面量定义的方式: 数据声明在方法区中的字符串常量池中.
方式二: 通过 new + 构造器的方式: 保存的地址值, 是数据在堆空间中开辟空间以后对应的地址值.
3. 常用方法:
int length(): 返回字符串的长度: return value.length
char charAt(int index): 返回某索引处的字符 return value[index]
boolean isEmpty(): 判断是否是空字符串: return value.length == 0
String toLowerCase(): 使用默认语言环境, 将 String 中的所字符转换为小写
String toUpperCase(): 使用默认语言环境, 将 String 中的所字符转换为大写
String trim(): 返回字符串的副本, 忽略前导空白和尾部空白
boolean equals(Object obj): 比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString): 与 equals 方法类似, 忽略大小写
String concat(String str): 将指定字符串连接到此字符串的结尾. 等价于用 "+"
int compareTo(String anotherString): 比较两个字符串的大小
String substring(int beginIndex): 返回一个新的字符串, 它是此字符串的从 beginIndex 开始截取到最后的一个子字符串.
String substring(int beginIndex, int endIndex) : 返回一个新字符串, 它是此字符串从 beginIndex 开始截取到 endIndex(不包含) 的一个子字符串.
boolean endsWith(String suffix): 测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix): 测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset): 测试此字符串从指定索引开始的子字符串是否以指定前缀开始
boolean contains(CharSequence s): 当且仅当此字符串包含指定的 char 值序列时, 返回 true
int indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str, int fromIndex): 返回指定子字符串在此字符串中第一次出现处的索引, 从指定的索引开始
int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最后一次出现处的索引, 从指定的索引开始反向搜索
注: indexOf 和 lastIndexOf 方法如果未找到都是返回 - 1
替换:
String replace(char oldChar, char newChar): 返回一个新的字符串, 它是通过用 newChar 替换此字符串中出现的所 oldChar 得到的.
String replace(CharSequence target, CharSequence replacement): 使用指定的字面值替换序列替换此字符串所匹配字面值目标序列的子字符串.
String replaceAll(String regex, String replacement): 使用给定的 replacement 替换此字符串所匹配给定的正则表达式的子字符串.
String replaceFirst(String regex, String replacement): 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串.
匹配:
boolean matches(String regex): 告知此字符串是否匹配给定的正则表达式.
切片:
String[] split(String regex): 根据给定正则表达式的匹配拆分此字符串.
String[] split(String regex, int limit): 根据匹配给定的正则表达式来拆分此字符串, 最多不超过 limit 个, 如果超过了, 剩下的全部都放到最后一个元素中.
三, String 与其他结构的转换
1 . 与基本数据类型, 包装类之间的转换
String --> 基本数据类型, 包装类: 调用包装类的静态方法: parseXxx(str)
基本数据类型, 包装类 --> String: 调用 String 重载的 valueOf(xxx)
2. 与字符数组之间的转换
String --> char[]: 调用 String 的 toCharArray()
char[] --> String: 调用 String 的构造器
3. 与字节数组之间的转换
编码: String --> byte[]: 调用 String 的 getBytes()
解码: byte[] --> String: 调用 String 的构造器
编码: 字符串 --> 字节 (看得懂 ---> 看不懂的二进制数据)
解码: 编码的逆过程, 字节 --> 字符串 (看不懂的二进制数据 ---> 看得懂
说明: 解码时, 要求解码使用的字符集必须与编码时使用的字符集一致, 否则会出现乱码.
来源: http://www.bubuko.com/infodetail-3447832.html