单例模式设计思想:保证一个类仅有一个实例
特点:1.单例类只有一个实例,对于单例类不管声明多少个对象,在内存中只有一个对象空间被开辟,实现节约资源
2.单例类必须自己创建唯一的实例
3.并提供一个访问它的全局访问点
懒汉模式
public class DanLi{
private static DanLi dl=null;
public static DanLi getDanLi(){
if(dl==null){
dl=new DanLi();
}
return dl;
}
}
饿汉模式
public class DanLi{
private static DanLi dl=new DanLi();
private DanLi(){ }
public static DanLi getDanLi(){
return dl;
}
}
String:底层是一个不可变的字符型数组
private final char value[ ];
编码转换:字符串->字节 byte[]b=s.getBytes("utf-8");
字节->字符串 String str=new String(b,"utf-8");
常用方法:
增:concat 拼接
删:substring 截取
trim 去空白
split 拆分
改:replace、replaceAll 替换
getBytes toCharArray 数组
查:equals、equalslognoreCase 相同
contains 包含
length、codePointCount 长度
isEmpty 是否为空
compareTo 比大小
startsWith、ednsWith 判断首尾
codePointAt 查unicode码
String str1="正确";
String str2="结果";
String str3=str1+str2;
String str4="正确结果";
str3==str4//false
str3=str3.intern();//尝试添加到常量池中,如果有返回已有地址
str3==str4//true
Object.equals(obj1,obj2); 避免空指针问题
缓冲区:一个定长的存储空间,在存储超出范围时会申请新的空间,将旧数据拷贝到新的空间中,那么在申请的时候追加预留空间增加一个int变量,作为空间使用区域的游标,区分有效区和预留区
StringBuffer与StringBuilder
String,StringBuffer,StringBuilder区别?
String不可变,因为他是final修饰的一个char数组,但是StringBuffer和StringBuilder是可变的Java提供了对他俩本身修改操作的API
StringBuffer是线程安全的,速度慢。因为该类有synchronized修饰,并且将一些数据缓存出来,每次修改都将缓存过期处理
StringBuilder是线程不安全的,速度快
抽象类中的方法:append 向后追加
intsert 向指定位置追加
delete 删除
replace 替换
reverse 翻转字符串
capacity 查询真实容量
StringBuffer与StringBuilder没有重写equals方法