枚举
概念
枚举:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围
格式:
public enum s{
枚举项1,枚举项2,枚举项3;
}
定义枚举类要用关键字enum
练习 定义一个枚举类,用来表示春,夏,秋,冬这四个固定值
public enum Season{
//SPRING,SUMMER,AUTUMN,WINTER;
SPRING("春"){//如果枚举类中有抽象方法
//那么枚举项中必须要全部重写
public void show(){
sout(this.name);
}
},
SUMMER("夏"){
public void show(){
sout(this.name);
} },
AUTUMN("秋"){
public void show(){
sout(this.name);
} },
WINTER("冬"){
public void show(){
sout(this.name);
} };
//枚举类也可以定义成员变量
public String name;
//空参构造
// private Season(){}
//有参构造
private Season(String name){
this.name=name;
}
//抽象方法
public abstract void show();
}
枚举的特点:
1.所有枚举类都是Enum的子类
2.我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
3.每一个枚举项其实就是该枚举的一个对象
4.枚举也是一个类,也可以去定义成员变量
5.枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号不能省略,建议不要省略
6.枚举类可以有构造器,但必须是private的,它默认的也是private的
枚举项的用法比较特殊:枚举(" ");
7.枚举类也可以有抽象方法,但是枚举项必须重写该方法
//特点二演示
sout(Season.SPRING);
//第三个特点演示
Season spring=Season.SPRING;
枚举的方法
什么是注解
注解的主要作用:对我们的程序进行标注和解释
自定义注解
自定义注解---格式
public @interface Anno2 {
}
public @interface Anno1 {
//定义一个基本类型的属性
int a () default 23;
//定义一个String类型的属性
public String name() default "study";
//定义一个class类型的属性
public Class clazz() default Anno2.class;
//定义一个注解类型的属性
public Anno2 anno() default @Anno2;
//定义一个枚举类型的属性
public Season season() default Season.SPRING;
//以上类型的一维数组
//int 数组
public int[] arr() default {1,2,3,4,5};
//枚举数组
public Season[] seasons() default {Season.SPRING,Season.SUMMER};
//value.后期我们在使用注解的时候,如果我们只需要给注解的value属性赋值
//那么vlue就可以省略
public String value();
}
package com.itheima.study;
//在使用注解的时候如果注解里面的属性没有指定默认值
//那么我们就需要手动给出注解属性的设置值
//@Anno1(name="itheima")
@Anno1("abc")
public class AnnoDemo {
}
元注解
元注解:就是描述注解的注解
单元测试
Junit特点
Junit使用的基本流程
public class JunitDemo1{
psvm{
}
//测试方式 右键@Test 点击Run add()
@Test
public void add(){
int a=10;
int b=20;
int sum=a+b;
sout(sum);
}
}
常用注解介绍
日志技术
Log4j开发流程
public class Log4JTest01{
//使用slf4j里面的api来获取日志对象
//好处:如果以后我们更换日志的实现类,那么下面的代码不需要跟着修改
//推荐使用
private static final Logger LOGGER=LoggerFactory.getLogger(Log4JTest01.class);
psvm{
LOGGER.debug("debug级别的日志");
LOGGER.info("info级别的日志");
LOGGER.warn("warn级别的日志");
LOGGER.error("error级别的日志");
}}
修改配置文件,才能输出debug级别日志
Log4j组成
Loggers(记录器)
Appenders(输出源)
Layouts(布局)
配置文件
配置根Logger
配置文件
ConsoleAppender常用的选项
FileAppender 常用的选项
public class LoginServlet implements HttpServlet{
//获取日志对象
private static final Logger LOGGER=LoggerFactory.getLogger(LoginServlet .class);
@Override
public void service(HttpRequest httpRequest,HttpRespone httpResponse)
{ //处理
sout("LoginServlet处理了登录请求");
LOGGER.info("现在已经处理了登录请求,准备给浏览器响应");
//响应
httpResponse.setContentTpye("text/html;charset=UTF-8");
httpResponse.write("登录成功");
}
}