Java字符串知识点总结

字符串

1.创建字符串
//字符串的本质是一个字符串数组,一旦创建之后在不能被修改,如果修改实际上是指向了一个新对象,原有的字符还
//存在于内存中
String a = new String("abc");//不推荐
String b = "abc";
String c = new String(byte[],String charsetName)
2.字符串常用API
方法名称 描述
equals(String string) 判断两个字符串是否相等
equalsIgnoreCase(String string) 忽略大小写判断两个字符串是否相等
length() 获取字符串长度
charAt(int index) 获取某个索引处的字符
indexOf(String string) 获取字符串第一次出现的位置
indexOf(String string,int startIndex) 从startIndex处查找第一次出现的位置
lastIndexOf(String string) 字符串最后一次出现的位置
startsWith(String string) 判断是否以string开始
endsWith(String string) 判断是否以string结尾
compareTo(String string) 比较字符串大小
toLowerCase() 字符串转小写
toUpperCase() 字符串转大写
subString(int index) 从index位置处截取到字符串末尾
subString(int startIndex,int endIndex) 从startIndex位置开始,到endIndex结束,前闭后开
trim() 去除字符串首尾空格
split(String string) 以string对字符串进行分割,此方法会省略末尾空字符
split(String string,int limit) 对字符串进行分割,此方法不会省略末尾空字符
join(String s,String...str) 以s为连接符,连接str内字符串
concat(String str) 连接字符串
valueOf() 基本类型转字符串
contains(String str) 判断是否包含str
toCharArray(String str) 将字符串转换成字符数组
intern()
isEmpty() 判断字符串是否为空
3.可变参数
  1. 本质是一个数组
  2. 参数可以传0个,也可以传1个,也可以传多个
  3. 使用可变参数前,要判断参数是否为null,以及长度是否大于0
4.字符串类型转换
  1. 基本类型转字符串:包装类.parseXXX()
  2. 字符串转基本类型: String.valueOf()
5.==和equals的区别
  1. ==用于判断内存中值是否相等
  2. equals用于判断对象是否相等
6.String中的陷阱
  1. String a="abc";String b="abc",a==b?和a.equals(b)
  2. String a = "abc";String b = new String("abc");a==b?和a.equals(b)
  3. String类可以被继承吗?
7.StringBuffer和StringBuilder
方法 描述
append(String str) 字符串末尾追加字符串
delete(int start, int end) 删除区间内字符
deleteCharAt(int index) 删除索引处字符
replace(int start, int end, String str) 替换区间内的字符
substring(int start) 从start处截取到末尾
substring(int start, int end) 从start处截取到end
insert(int offset, String str) 索引处插入字符串
indexOf(String str) 第一次出现的位置
reverse() 字符序列反转
toString() 对象转成字符串
8.StringBuffer和StringBuilder和String的区别

相同点:

  1. 底层都是用数组实现的

  2. 都是CharSequence的子类

  3. 都是用final修饰的,不能被继承

不同点:

  1. String创建的对象是不可变的,改变String对象的值实际是指向新的对象
  2. StringBuffer和StringBuilder创建的对象是可变的。
  3. StringBuffer是线程安全的,StringBuilder是非线程安全的。

你可能感兴趣的:(Java字符串知识点总结)