字符串相关的包
java.lang包 实现接口Serializable, CharSequence, Comparable
String 非常特殊的类 可以像常量一样创建对象
String str="abc"; 对象 char[] value
String不可变特性
频繁的修改其内容的时候 性能很不好
内存存储
StringBuffer、StringBuilder
1.所属的包 java.lang包
2.继承AbstractStringBuilder 间接继承Object 实现接口 Serializable, Appendable, CharSequence
StringBuffer、StringBuilder没有compareTo方法;
含有String没有的方法 append();拼接
3.特性
可变字符串 char[] value; 动态扩容
4.对象的构建
无参数构造方法
有参数构造方法
5.StringBuilder中常用的方法
最主要的方法append() 频繁的拼接字符串的时候使用此方法 提高性能
capacity();//字符串底层char
=======================================
1.StringBuilder类不一定需要 是为了避免String频繁拼接修改信息的时候才用的;
底层数组是可变的 提高了性能;
2.常用方法
与String类不同的独有方法
append() insert() delete() deleteCharAt() reverse()
与String类中同名的方法
length() charAt() codePointAt() indexOf() lastIndexOf() replace()
不是很常用的方法;
ensureCapacity() capacity() setLength() trimToSize()(去掉多余空间) setCharAt()
3.String家族 笔试中经常容易考察的知识点
3.1String所属的包 继承关系 实现接口
java.lang 继承Object 实现3个接口;
3.2 String构建方式
常量 构造方法
3.3 String对象内存结构
字符串常量区 new堆内存对象
== equals()区别
"a"+"b"+"c"
3.4 String 不可变特性
长度及内容
3.5 String中常用方法
concat(); toUpperCase();
3.6 String和StringBuilder区别
String不可变字符串
JDK1.0
有一个接口Comparable
不可变体现在长度及内容
有一些方法另一个没有 concat compareTo toUpper
StringBuilder可变字符串
JDK1.5
有一个接口Appendable
可变字符串 没有final修饰 底层可以进行数组扩容
有一些String没有 append() insert() delete() reverse()
3.7 StringBuffer和StringBuilder的不同
StringBuffer早期版本1.0
Stringbuilder后来的版本1.5
早期版本 线程同步 安全性比较高 执行效率相对较低
后期版本 线程非同步 安全性比较低 执行效率相对较高
public class Test0518{ public static void main(String[] args){ //String str="a"; StringBuilder a=new StringBuilder("a");//17个长度 long time1=System.currentTimeMillis(); for(int i=1;i<=20000;i++){ //str+="a";//利用+拼接 589 //str.concat("a");// 3 a.append("a");//2 } long time2=System.currentTimeMillis(); System.out.println(time2-time1); } }//拼接字符串性能对比