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();
}
}
day11 枚举类enum & 单例模式 & 异常以及抛出的更多相关文章
- Java枚举类enum
枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...
- Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- java中异常的抛出:throw throws
java中异常的抛出:throw throws Java中的异常抛出 语法: public class ExceptionTest{ public void 方法名(参数列表) throws 异常列表 ...
- java 枚举类 enum 总结
枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...
- java 枚举 类 enum
public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializab ...
- 枚举类 enum,结构体类 struct
1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...
- java枚举类Enum方法简介(valueof,value,ordinal)
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到en ...
- 枚举类enum的values()方法
value()方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类.接下来 ...
- zend framework获取数据库中枚举类enum的数据并将其转换成数组
在model中建立这种模型,在当中写入获取枚举类的方法 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 class Student extends Zend_D ...
- 枚举类enum应用以及注解@transient应用
1.增加枚举类 public enum RightTypeEnum { AUTHORITY("访问权限") private String type; RightTypeEnum(S ...
随机推荐
- Skype for Business server 数据库安装
之前安装了SFB 2015标准版,但是没有安装归档据库,现在打算重新安装.环境中安装的是默认自带的SQL EXPRESS. 继续安装向导,安装SQL数据库.但是在最后的时候遇到了问题. 安装向导报错 ...
- Python数据科学手册-Numpy入门
通过Python有效导入.存储和操作内存数据的技巧 数据来源:文档.图像.声音.数值等等,将所有的数据简单的看做数字数组 非常有助于 理解和处理数据 不管数据是何种形式,第一步都是 将这些数据转换成 ...
- 【debug】 Linux中top的使用
在我们日常的开发中,我们经常需要查看每个线程的cpu使用情况.其实,在linux中,top也是我们查看cpu使用状况的一个好帮手 top:先查看每一个进程的使用状况 我们可以发现PID:3800这个经 ...
- 使用kubeoperator安装的k8s 版本1.20.14 将节点上的容器运行时从 Docker Engine 改为 containerd
官方文档:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/change-runt ...
- k8s ingress-nginx 使用 snippet 添加自定义配置 (比如:新增请求头)
比如在有些时候我们需要在 server 里或者 location 里添加一些参数,例如添加包体大小限制.添加跨域配置.添加自定义header.处理响应header等等.遇到这些需求的时候,我们开始怀念 ...
- SNI 路由和多协议端口的 TCP
文章转载自:https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA 下面是一个简单的示例配置 - 使用最新支持的 YAML 文件格式,将请求路由到一个数据库 ...
- 迁移一个仓库到新的Gitlab
一般这种迁移,要注意旧仓库的提交历史等信息也要同步到新的仓库. 先使用如下命令克隆老的: git clone --bare git@gitlab.test1.com:f2e/test.git 新仓库创 ...
- java基础-冒泡排序以及稀疏数组
java基础 以下内容为本人的学习笔记,如需要转载,请声明原文链接 https://www.cnblogs.com/lyh1024/p/16720908.html Ø 冒泡排序原理: 比较数组中, ...
- 如何通过 Java 代码隐藏 Word 文档中的指定段落
在编辑Word文档时,我们有时需要将一些重要信息保密. 因此,可以隐藏它们以确保机密性. 在本文中,将向您介绍如何通过 Java 程序中的代码隐藏 Word 文档中的特定段落.下面是我整理的具体步骤, ...
- 二叉树及其三种遍历方式的实现(基于Java)
二叉树概念: 二叉树是每个节点的度均不超过2的有序树,因此二叉树中每个节点的孩子只能是0,1或者2个,并且每个孩子都有左右之分. 位于左边的孩子称为左孩子,位于右边的孩子成为右孩子:以左孩子为根节点的 ...