常用类
String
- String 字符串 使用一对"“引起来表示
1.String声明为final的,不可被继承
2.String实现了Serializable接口,表示字符串是支持序列化的
String实现了Serializable接口,表示字符串是支持序列化的
3.String在内部定义了final char[] value用于存储字符串数据
4.String代表不可变的字符序列,即 不可变性
5.通过字面量的方式定义(不同于new)给一个字符串赋值,此时声明的字符串值存储在方法区中
6.字符床常量池中不会存储相同的字符串
7. 使用这样String s = new String(“123”);的创建,内存中创建了两个对象
1.在堆中创建了String类,使用final 的char数组 存储了1,2,3,
2.在方法区创建了字符串"123”
8.String str2 = str1.intern()方可以使,str2的变量结果在方法区中的常量池中String的常用方法
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(不包含)的一个子字符串。类似【)
public class Test {
@org.junit.Test
public void test1(){
String str1 = " HELLO word ";
System.out.println(str1.length());
System.out.println(str1.charAt(0));
System.out.println(str1.isEmpty());
String str2 = str1.toLowerCase();
System.out.println(str2);
String str3 = str1.toUpperCase();
System.out.println(str3);
String str4 = str1.trim();
System.out.println(str4);
System.out.println(str4.equals("HELLO word"));
System.out.println(str4.equalsIgnoreCase("heLLO word"));
System.out.println(str1.compareTo(str3));
System.out.println(str4.concat(" Yes"));
System.out.println(str4.substring(3));
System.out.println(str4.substring(2, 4));
}
}
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):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
public class Test2 {
public static void main(String[] args) {
String str1 = "Helloword";
System.out.println(str1.endsWith("rd"));
System.out.println(str1.startsWith("He"));
System.out.println(str1.startsWith("ll", 2));
System.out.println(str1.contains("wo"));
System.out.println(str1.indexOf("l"));
System.out.println(str1.indexOf("l", 3));
System.out.println(str1.lastIndexOf("r"));
System.out.println(str1.lastIndexOf("r", 8));
}
}
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个,如果超过了,剩下的全部都放到最后一个元素中。
public class Test3 {
public static void main(String[] args) {
String str1 = "1he2ll3ow4or5d";
String str2 = str1.replace("or", " java ");
String str3 = str1.replaceAll("\\d+",",");
String str4 = str1.replaceFirst("\\d+",",");
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(Arrays.stream(str1.split("ll")));
System.out.println(str1.split("l", '1'));
}
}
String,StringBuff,StringBuilder三者的异同
- 相同点
- 三个类都是与字符串相关的,基层存储使用的都是char[]数组
- 不同点
1.String 是不可变的字符序列 (value等属性使用final修饰)
StringBuff和StringBuilder 都是可变的字符序列 (value等属性没有使用final修饰)
2.String 和 StringBuff是线程安全的 (方法使用了synchronized) , 效率低
StringBuilder是线程不安全的 (方法没用synchronized) 效率高
StringBuff
- 层层默认会 + 16个字符位
- 扩容 通常是两倍 + 2
- 开发中建议使用StringBuff,尽量避免连续append()16 次
StringBuff常用方法
- StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
- StringBuffer delete(int start,int end):删除指定位置的内容
- StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
- StringBuffer insert(int offset, xxx):在指定位置插入xxx
- StringBuffer reverse() :把当前字符序列逆转
执行效率(从高到低)
StringBuilder > StringBuff > String