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();
}
}

day11 枚举类enum & 单例模式 & 异常以及抛出的更多相关文章

  1. Java枚举类enum

    枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...

  2. Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  3. java中异常的抛出:throw throws

    java中异常的抛出:throw throws Java中的异常抛出 语法: public class ExceptionTest{ public void 方法名(参数列表) throws 异常列表 ...

  4. java 枚举类 enum 总结

    枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...

  5. java 枚举 类 enum

    public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializab ...

  6. 枚举类 enum,结构体类 struct

    1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...

  7. java枚举类Enum方法简介(valueof,value,ordinal)

    Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class,   它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口.   当我们在声明一个enum类型时,我们应该注意到en ...

  8. 枚举类enum的values()方法

    value()方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类.接下来 ...

  9. zend framework获取数据库中枚举类enum的数据并将其转换成数组

    在model中建立这种模型,在当中写入获取枚举类的方法 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 class Student extends Zend_D ...

  10. 枚举类enum应用以及注解@transient应用

    1.增加枚举类 public enum RightTypeEnum { AUTHORITY("访问权限") private String type; RightTypeEnum(S ...

随机推荐

  1. 更改elasticsearch中索引的mapping

    文章转载自:https://www.cnblogs.com/uglyliu/p/12331964.html 昨天研发说在kibana中统计userid字段不出图,后来查到该字段显示冲突了,然后再查看了 ...

  2. 4_Spring

    一. Spring Spring的基本组成: 1.最完善的轻量级核心框架. 2.通用的事务管理抽象层. 3.JDBC抽象层. 4.集成了Toplink, Hibernate, JDO, and iBA ...

  3. 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记

    论文题目:<Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition> 论文作者:Qibin ...

  4. Oh My Life~

    作者:HChan 链接:https://zhuanlan.zhihu.com/p/47084162 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Part 1 那年 ...

  5. 详解ROMA Connect API 流控实现技术

    摘要:本文将详细描述API Gateway流控实现,揭开高性能秒级流控的技术细节. 1.概述 ROMA平台的核心系统ROMA Connect源自华为流程IT的集成平台,在华为内部有超过15年的企业业务 ...

  6. windows C++ 异常调用栈简析

    楔子 以win11 + vs2022运行VC++ 编译观察的结果. 如果安装了Visual Studio 2022,比如安装在D盘,则路径: D:\Visual Studio\IDE\VC\Tools ...

  7. Python凯撒密码加解密

    #凯撒密码第一个版本 #加密 pxpt=input("请输入明文文本:") for p in pxpt: if 'a'<=p<='z': print(chr(ord(' ...

  8. 原生JavaScript

    原生JavaScript 为了方便查看. 所有的js和css代码都是嵌入式直接写在html代码中 1.js的引入方式 <!DOCTYPE html> <html lang=" ...

  9. Linux中CentOS 7版本安装JDK、Tomcat、MySQL、lezsz、maven软件详解

    软件安装 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 rpm安装 软件已经按照 ...

  10. springboot+vue 实现校园二手商城(毕业设计一)

    1.功能划分 2.实现的效果 2.1 登录页面 2.2 注册页面 2.3 商城首页 2.4 商品详情 2.5 购物车 2.6 订单 2.7 在线交流 2.8 公告信息 2.9 个人信息 3.后台管理界 ...