String字符串常量
StringBuffer字符串变量(线性安全)
StringBuilder字符串变量(非线程安全)
String中的String类使用final关键字修饰字符数组来保存字符串,private final char value[],String对象是不可变的,也就是可以理解为常量,线程安全。
AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
StringBuilder并没有对方法进行同步锁,所以是非线程安全的。
实现:抽象类的子类使用extends来继承;接口必须使用implements来实现接口。
构造函数:抽象类可以有构造函数;接口不能有。
main方法:抽象类可以有main方法,并且我们能运行它;接口不能有main方法。
实现数量:类可以实现很多接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意访问修饰符。
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的byte类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字母。
substring():截取字符串。
equals():字符串比较。
单例模式:某一个类的实例在多线程环境下只会被创建一次出来。
单例模式分为饿汉式单例模式,懒汉式单例模式和双检锁单例模式三种。
饿汉式:线程安全,一开始就初始化
public static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
懒汉式:非线程安全,延迟初始化
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
双检锁:线程安全,延迟初始化
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
在Java中的反射机制是指在运行状态中,对于任意一类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制。
获取Class对象的3种方法:
调用某个对象的getClass()方法
Person p=new.Person();
Class clazz = p.getClass():
调用某个类的class属性来获取该类对应的Class对象
Class clazz=Person.class;
使用Class类中的forName()静态方法(最安全/性能最好)
Class clazz = Class.forName(“类的全路径”)