day11 枚举类enum & 单例模式 & 异常以及抛出

day11

枚举enum

用enum关键字定义枚举类

特点

1.用enum关键字定义枚举类

2.枚举类默认继承java.lang.Enum类

3.枚举类的构造方法只能使用private修饰,省略则默认使用private

4.枚举类的所有对象(实例)必须在枚举类中显示列出,否则这个枚举类永远不能创建新实例对象

5.枚举列出的对象,系统会自动添加public static final修饰

作用、使用场景

微信、支付宝的服务器地址

美团的收款账户

存储固定不变的开发账户、ip地址、密钥 等

//设计模式:软件开发规范

//单例模式:一个类有且只能有一个对象

设计模式:软件开发规范

单例模式的写法

1.枚举

public enum User{
    //枚举类对象只能显示列出,默认省略public static final
   u1(), u2("name","1111");
    
    private final String name;
    private final String pass;
    
    private User(){        
    }
    //构造方法默认使用private修饰
    User(String name, String pass){
        this.name = name;
        this.pass = pass;
    }   
}
public static void main(String[] args){
    User u = User.u1();//不能new,但可以直接调用User类的对象
    u.setName();//调用后可以正常用setget方法
}

2.懒汉式

(什么时候用什么时候创建初始化)

在第一次调用的时候实例化(在程序执行过程中,需要该类对象的时候,才会完成实例化)

public class Person{
    private static Person p;
    private Person(){}
    public static Person getInstance(){
        if(p == null){
            p = new Person();//如果p空,则创建Person对象
        }
        return p;
    }
}
class Demo{
    public static void main(String[] ages){
        Person p = Person.getInstance();//调用方法创建对象之后,才会进行初始化
    }
}

3.饿汉式

在类初始化时,已经自行实例化(在程序执行之前,先完成实例化,在程序执行过程中直接返回创建的对象)

public class Person{
    //private String name;
    //private String pass;
    private static final Person p = new Person();
    private Person(){}
    private static Person getInstance(){
        return p;
    }
}
public class Demo02{
    public static void main(String[] args){
        Person p = Person.getInstance();
    }
}

异常Exception

所有的异常都是java.lang.Exception的子类

检查性异常:无法避免

比如断网,处理文件不存在等

1)ClassNotFoundException:应用程序视图加载类时,找不到相应的类,抛出该异常

2)IllegalAccessException:访问一个类被拒绝的时候,抛出该异常

3)NoSuchFieldException:请求的变量不存在

4)NoSuchMethodException:请求的方法不存在

运行时异常:可以避免

运行时异常可以在编译时被忽略,如:空指针异常

1)ClassCastException:对象类型转换异常

2)IndexOutOfboundsException:下标越界异常

3)NullPointerException: 空指针异常

避免异常

捕获

try{

	可能出现异常的代码,用try捕获

}catch(Exception e){

	//捕获异常

	System.out.println("出现异常");

	e.printStackTrace();//定位异常

	//e.getMessage();//有时候打印有时候不打印

}catch(NullPointerException e){

	e.printStackTrace();

}finally{

	//无论是否出现异常,finally中的代码都会在最后执行



}


执行顺序:try/catch>finally>retrun

抛出异常

手动抛出一个异常(基本不用)

throw new NullPointerException();

在方法声明后面抛出异常

//eg:
public static void main(String[] args) throws Exception{
    
}

错误

java.lang.Error

递归:

自己一直调用自己

public static void fun1(){
	count++;
    System.out.println(count);
    
    try{
        fun1();
    }catch(Error e){
        e.printStackTrace();
    }
}
posted @ 2022-10-14 17:13  小彤在努力  阅读(92)  评论(0)    收藏  举报