1、单例模式的两种实现
定义 :确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类
称为单例类。
显然单例模式的要点有三个:一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例
饿汉式
class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){}
static Singleton getInstance() {
return instance;
}
}
懒汉式
class Singleton {
private static Singleton instance=null;
//私有构造方法
private Singleton(){}
//同步静态方法
public static synchronized Singleton getInstance() {
if(instance==null)
instance=new Singleton();
return instance;
}
}
2、String ,StringBuffer,StringBuilder 区别
(1)、String 类是不可变的类,任何对 String 所指代的字符串的改变都会引发新的 String 对象
的生成;
而 StringBuffer 类则是可变类,任何对它所指代的字符串的改变都不会产生新的对象;
如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer
(2)、StringBuffer 是线程安全的,但是在单线程中的性能没有 StringBuilder 高
StringBuilder 是非线程安全的,但是在单线程中的性能比 StringBuffer 高
3、抽象类与接口的区别
(1)、抽象类:抽象类可以有自己的部分实现,而且抽象类可以互相继承;接口:则完全是一
个标识,里面所有方法都是抽象方法,没有一个有程序体。在接口里不能实现方法,但是
可以有多重继承
(2)、抽象类:不能创建抽象类的实例,也不能 new 一个对象,可以创建一个变量,其类型
为抽象类型,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法,可
以有 main()方法;
接口:接口只可以定义 static final 成员变量。