枚举、单元测试、日志(java)

枚举

概念

枚举:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围

格式:

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("登录成功");
  }
}

 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值