String类
String java.lang 默认继承object 实现了三个接口Serializable, CharSequence, Comparable
是一个特殊的引用数据类型。创建对象方法如下
String str ="abc"; 直接将字符串常量赋值给str(字符串常量池)
String str =new String(); 相当于 String str =""
String str =new String("abc"); 相当于String str ="abc"
String str =new String(byte[]);
String str =new String(char[]);
特性:不可变特性
在String类中包含一个数组 private final char[] value
final修饰的是引用类型地址不可变 数组本身的特性:长度不可变动 私有的改不了数组中的内容
方法
重写了boolean=equals(Object obj) 比较字面值
重写了int =hashcode()
int=compareTO(String str) 实现Comparable接口的方法 按照字典索引的顺序比较
1、先找到长度短的那个作为循环的次数
2、str1[i]-str1[2]如果有不一样的 返回插值 如果都一样就返回两个长度的差值
3、如果循环过后都一样返回0
重写toString() 返回的不是 类型@hashcode 的形式而是字符串
char=charAt(int index) 返回字符串给定index对应位置的那个char值
int=codePointAt(int index) 返回字符串给定index对应位置的那个char值所对应的code码
str=concat(String str) 拼接 比两个字符串相加省性能
int=length(); 返回字符串的长度 区别于数组的length是属性
boolean=contains(charSequence s) 判断给定的s是否在字符串中存在
boolean=endsWith(String str) 判断是否以某字符串结尾
boolean=startsWith(String str) 判断是否以某字符串开头
byte[]=getBytes() 将字符串转换成数组
char[]=toCharArray() 将字符串转换成数组
int=indexOf() 字符串第一次出现的位置 第二个参数表示从某个索引开始往后找 找不到返回-1
int=lastIndexOf() 字符串最后一次出现的位置 第二个参数表示某个索引往前找 找不到返回-1
boolean=isEmpty() 判断字符串是否为空"" String a=null a.isEmpty()会空指针异常
str=replace(str1,str2) 将给定的字符串全部替换
str=replaceAll() 将给定的字符串全部替换
str=replaceFirst() 替换第一个出现的元素
split() 按照给定的表达式讲原来的字符串拆分 可以选择拆成几段
str=substring() 取某个索引到某个索引的值 前闭后开 后面不写就到最后
str=toUpperCase() 将全部字符串转成大写
str=toLowerCase() 将全部字符串转成小写
str=trim() 去前后的空格
StringBuffer/StringBuilder类
1、了解类所在的包 java.lang 不需要导包
2、类的关系 默认的实现继承
没有继承关系 实现了三个接口Serializable, CharSequence,Appendable
3、如何创建对象
StringBlider str =new Stringbuilder(); 默认开辟长度为16的字符串
StringBlider str =new Stringbuilder(20); 开辟长度为20的字符串
StringBuilder build2=new StringBuilder("abc"); 默认长度是字符串长度+16
StringBuilder build2=new StringBuilder(CharSequence seq);
传另一个String StringBuffer StringBuild类型 默认长度是字符串长度+16
4、类提供的方法
StringBuilder=append() 方法 提供了很多重载 拼接 不需要接
int=capacity() 返回容量值
int=length() 返回字符串的长度
char=charAt(int index) 返回字符串给定index对应位置的那个char值
StringBuilder=setCharAt(1,'a') 将1号索引的char改成a
int=codePointAt(int index) 返回字符串给定index对应位置的那个char值所对应的code码
String=substring() 取某个索引到某个索引的值 前闭后开 后面不写就到最后 返回的是String类型
StringBuilder=delete(2,5) 删除索引的区间值 可以不用接收
StringBuilder=deleteCharAt() 删除某个索引 可以不用接收
int=indexOf() 字符串第一次出现的位置 第二个参数表示从某个索引开始往后找 找不到返回-1
int=lastIndexOf() 字符串最后一次出现的位置 第二个参数表示某个索引往前找 找不到返回-1
StringBuilder=isnert(1,"2") 索引值插入
StringBuilder=replace(1,3,"abd") 把索引[1,3)换成abd
StringBuilder=reverse() 反转
String=toString() 将StringBuilder对象转换成String对象
trimToSize() 去掉容量中没有用的空数组空间 capacity()和length()就相等了
5、StringBuilder和StringBuffer区别
StringBuilder 1.5才有 安全性低,性能高
StringBuffer 1.0就有 安全性更高 执行效率低