String类
- 1.String的特性
- 1.1 String 字符串用一个""引起来进行概述
- 1.2 String声明为final 不可被继承
- 1.3.String实现了接口
- 1.3.1.String实现了 Serializable 接口 :表示字符串是可支持序列化的
- 1.3.2.实现了 Comparable 接口 :表示String可以进行比较大小
- 1.4.String内部定义了final char[] value 用于存储字符串数据(以下是源码)
- 1.5.String 是不可变的字符序列 简称为:字符串的不可变性(所谓的不可变不是String不可重新赋值,而是赋不同值时不在源码中的 final char value[ ]做改动)
- 1.5.1.当对字符串进行重新进行字面量赋值时,需要重新指定内存区域,不能使用原有的位置(在字符串常量池中)进行赋值
- 1.5.2.当对现有的字符串进行连接操作时,也需要进行重新指定内存区域
- 1.5.3.当调用String中的replace方式修改字符或字符串时,也需要进行重新指定内存区域,不能对原有的位置进行赋值
- 1.6.通过字面量的方式(区别于new的方式进行赋值)给一个字符串进行赋值 :
此时字符串存储在字符串常量池中
- 1.7.字符串常量池中是不会存储相同内容的字符串
- 2.String不同赋值方式的区别
- 2.1 通过字面量进行赋值:
String str = "What"
//这就是字面量进行赋值
这种方式创建的String储存在方法区中字符串常量池中 - 2.2 通过new+构造器的方式进行赋值:
例如
String str = new String("aaaa");
str 存储的地址是在堆空间中开辟的地址
那个开辟的地址储存方法区中的字符串常量池中的 char[ ] 地址 - 2.3 内存情况
- 2.1 通过字面量进行赋值:
- 3.String不同拼接方式的对比
- 3.1 仅通过常量的拼接的方式 :拼接的结果还是储存在常量池中,且常量池中不会出现相同内容的常量
- 3.2 拼接中出现变量:结果在堆中
- 3.3 结果调用intern方法:如果拼接的结果调用intern()方法,返回值就在常量池中
- 4 String的常用方法
方法 | 用途 |
---|---|
int length() | left-aligned 返回字符串的长度 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) 实际上就是进行字符串进行按每个字符进行用对应的Ascii码值进行相减操作 | 比较两个字符串的大小 |
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) | 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 |
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个,如果超过了,剩下的全部都放到最后一个元素中 |
byte[ ] getBytes() | 将String 转换为 byte[ ]类型 |
String构造器 | 将char [ ]转换为String byte [ ]转换为String |
char [ ] charArray() | 将String转换为char [ ] |
包装类 包装类.parseXxx(String str) | 将String转换为包装类 |
包装类/基本数据类型 + “” | 将包装类/基本数据类型转换为 String |