1.单例设计模式
单例就是该类只能返回一个实例.
单例所具备的特点:
1.私有化的构造函数
2.私有的静态的全局变量
3.公有的静态的方法
饿汉式代码实现:
public class Boss{
//属性
private String name;
private int age;
//私有化构造方法
private Boss(String name, int age){
this.name = name;
this.age = age;
}
//私有静态本类对象作为属性
private static Boss boss = new Boss("马云",12);
//提供共有静态方法获取本类对象
public static Boss getBoss(){
return boss;
}
}
懒汉式代码实现:
pulbic class King{
//属性
private String name;
private int age;
//私有构造方法
private King(String name, int age){
this.name = name;
this.age = age;
}
//私有静态本类对象
private static King king;
//共有静态方法获取本类对象
public static King getKing(){
if(king==null){
king = new King("唐太宗",12);
}
return king;
}
}
懒汉式和饿汉式有什么区别?
语法区别:懒汉是调用方法时初始化对象,饿汉是声明同时初始化
使用上没有区别
存储空间:在第一次获取单例类对象前,懒汉比饿汉节省空间
多线程操作时区别:懒汉式存在线程安全问题,饿汉式没有线程安全问题
2.常见的异常类型
NullPointerException 空指针异常
ClassCastException 类型强制转换异常
IllegalArgumentException 传递非法参数异常
ArithmeticException 算术运算异常
IndexOutOfBoundsException 下标越界异常
NumberFormatException 数字格式异常
ClassNotFindException 加载请求异常
3.Throws和Throw的区别
位置:Throw方法内部,Throws方法名之后
作用:Throw抛出异常,Throws声明异常
个数:Throw一次抛出一个异常,Throws可以声明多个异常
4.sleep()和wait()有什么区别
sleep()是线程类(Thread)的方法,导致此线程暂停执行指定时间,将执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复.调用sleep不会释放对象锁.
wait()是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行运行状态相同点在于都会造成线程阻塞.