字符串相关工具类
字符串相关工具类
String类
- String类
- 所属的包是java.lang包
- 找寻构造方法创建对象
String str = "abc";//直接将字符串常量赋值给str (字符串常量池)
String str = new String();//无参数构造方法创建空的对象
String str = new String ("abc");//带String参数的构造方法创建对象
String str = new String(byte[]);//将数组中的每一个元素转化成对应的char,组合成String
String str = new String(char[]);//将数组中的每一个char元素拼接成最终的String - String类型的特性
String类中的不可变特性
Private final char[] value;//存储String中的每一个字符
final最终的不可改变的--->地址不让改变 数组的长度本身不可改变
private私有的当前类中-->数组的内容也不能改变 - String类中常用的方法 20+
boolena = equals(Object object);
//继承Object重写啦 比较两个字符串的字面值是否相等 - 笔试中经常会考察大家关于String的特点
StringBuffer
StringBuilder
-
所属的包 java.lang包
-
继承AbstractStringBuilder间接继承Object实现接口Serializable,CharSequence,Appendable
- StringBuffer/StringBuilder没有compareTo方法
- StringBuffer/StringBuilder含有一个String没有的方法append();拼接
-
特性
可变字符串 char[] value;动态扩容 -
对象的构建
//无参数构造方法 构建一个默认长度16个空间的对象 char[] StringBuilder builder = new StringBuilder(); //利用给定的参数 构建一个自定义长度空间的对象char[] StringBuilder builder = new StringBuilder(20); //利用带String参数的构造方法 默认数组长度:字符串长度+16个 StringBuilder builder = new StringBuilder("abc");
-
StringBuilder中最常用的方法
最主要的方法 stringBuilder.append(); 频繁的拼接字符串的时候使用此方法 提高性能 capacity(); 获取字符串底层char[]的容量 length(); 符串有效元素的个数(长度) setLength(); 手动设置有效元素个数 String = stringBuilder.substring(2,5); 截取从索引2开始到索引5截止(需要接受返回值才能看见截取出来的新字符串) StringBuilder = stringBuilder.delete(2,5); 删除索引2开始到索引5的字符 StringBuilder类中独有的方法String类没有 将start到end之间的字符串删掉 不用接受返回值就看到效果啦 StringBuilder = deleteCharAt(int index); String类中没有的方法 将给定index位置的某一个字符删除掉啦 int = indexOf(String str[,int fromIndex]); int = lastIndexOf(String str[,int fromIndex]); 找寻给定的str在字符串中第一次出现的索引位置,带重载 则从某一个位置开始 insert(int index,value) 将给定的value元素插入到index位置上,value可以是char、string等等 replace(int start,int end,String str); 将start和end之间的部分替换成str stringBuilder.replace(1,3,"yr"); setCharAt(int index,char value); 将index位置的字符改成某一个字符 reverse(); 将StringBuilder中的字符串反转 toString(); 将StringBuilder对象 构建成一个string对象 并返回 trimToSize();将数组中无用的容量去掉 变成length长度的数组
总结:
-
StringBuilder类不一定需要 是为了避免String频繁拼接修改字符串信息的时候才用的,底层数组是可变的,提高了性能
-
常用方法
与String类不同的独有方法
append() insert() delete() deleteCharAt() reverse()
与String类相同的方法
length() charAt() codePointAt() indexOf() lastIndexOf() substring() replace()名字相同 用法不一致
不是很常用的方法
ensureCapacity() capacity() setLength() trimToSize() setCharAt() -
String家族笔试中经常容易考察的知识点
-
String所属的包 继承关系 实现接口
-
String构建方式
-
String对象内存结构
字符串常量区 new对内存对象
== equals()区别 -
String不可变特性
长度及内容 -
String中常用的方法---与StringBuilder的区别
concat();toUpperCase() -
String和StringBuilder的区别 | String和StringBuffer的区别
String不可变字符串 JDK1.0
有一个接口Comparable
不可变体现在长度和内容
有一些方法另一个没有 concat compareTo toUpperCaseStringBuilder可变字符串
JDK1.5
有一个接口Appendable
可变字符串 没有final修饰 底层可以进行数组扩容
有一些方法String没有 append() insert() delete() reverse()
-
StringBuffer和StringBuilder的不同
StringBuffer早期版本1.0
StringBuilder后来的版本1.5
方法使用几乎一致,通常早期版本都是线程安全的,安全性比较高,执行效率相对较低
后期版本,线程非同步(安全),安全性比较低,执行效率相对较高
-