zoukankan      html  css  js  c++  java
  • day14

     二、文档注解,文档注释
        文档注解的声明,也有JDK核心类库声明过了
        使用:程序员使用
        读取:javadoc.exe来读取
        使用javadoc时,可以加参数 -encoding UTF-8
        @author:表示作者
        @version:表示版本
        @since:起始版本
        @see:另请参考
        @param:形参
        @return:返回值
        @throws:抛出的异常列表
        @param、@return、@throws只能在方法上使用
        @param 形参名 形参的数据类型  形参的解释
        @return 返回值类型  说明
        @throws 异常类型 说明

    三、单元测试

         声明和定义:JUnit框架中定义的
         使用:程序员
         读取:由java + JUnit框架读取
         如何运行?
         如果没有选择,那么当前源文件中的所有的单元测试都会运行
         如果选中某个方法,只运行某一个
        @Test:
         加在需要单独测试的方法。
         并且有要求:方法所在的类必须是public
         方法本身必须是public,而且是无参无返回值的,非静态的
        @Before
         加在需要在单元测试方法前面运行的方法上
         并且有要求:方法所在的类必须是public
         方法本身必须是public,而且是无参无返回值的,非静态的
         执行的特点:每一个@Test方法前面都会执行
        @BeforeClass
         加在需要在类初始化时执行的方法上
         并且有要求:方法所在的类必须是public
        方法本身必须是public,而且是无参无返回值的,静态的
       @AfterClass
        加在需要在类所有的测试方法之后执行的方法上
        并且有要求:方法所在的类必须是public
       方法本身必须是public,而且是无参无返回值的,静态的

    四、自定义注解
        1、语法格式:
        【修饰符】 @interface 注解名{
          }
       2、加元注解说明一下
          元注解:注解注解的注解,给注解加的注解。它们在java.lang.annotation包下
      (1)@Target
           @Target(ElementType.xx)
           @Target({ElementType.xx,ElementType.xx,...})
           ElementType是一个枚举类型,有很多常量对象:例如:TYPE,METHOD,FIELD,CONSTRUCTOR....
           @Target作用:限制自定义的注解的使用的目标位置

     (2)@Retention
         @Retention(RetentionPolicy.SOURCE):源代码阶段   该注解只能被编译器读取
         @Retention(RetentionPolicy.CLASS):字节码阶段  该注解只能被编译器和类加载器读取
         @Retention(RetentionPolicy.RUNTIME):运行时阶段  该注解可以在运行时仍然被读取
                SOURCE < CLASS < RUNTIME

         @Retention的作用:限制自定义注解的寿命,可以“滞留”到什么阶段
          RetentionPolicy也是枚举类型,常量对象只有三个:SOURCE,CLASS,RUNTIME
     (3)@Documented
            标记某个注解是否可以被javadoc读取到API中。
     (4)@Inherited
            标记某个注解是否可以被子类继承

    自定义注解2
     1、语法格式:
       @元注解
       【修饰符】 @interface 注解名{
         }
       @元注解
       【修饰符】 @interface 注解名{
          配置参数
         }
       没有配置参数的注解:
       (1)@Override
       (2)@Deprecated
       (3)@Documented
       (4)@Inherited
       (5)@Test
      有配置参数的
      (1)@SuppressWarnings(xx)
      (2)@Target(xx)
      (3)@Retention(xx)
      (4)@WebServlet(xx)
      1、配置参数的声明
        (1)声明格式:
            数据类型  参数名();
        (2)配置参数在声明时,可以有默认值
           数据类型  参数名() default 默认值;
       (3)数据类型
          注解的配置参数的数据类型的要求:8种基本数据类型,4种引用数据类型(String,Class,枚举,注解

           可以是它们的数组类型,例如:int[],String[],枚举类型[]等
      2、如果有配置参数,在使用时
        (1) @注解名(参数名1 = 参数值1,参数名2 = 参数值2,。。。。)
        (2)如果这个注解只有一个配置参数,并且它的名字叫做value,那么可以省略value=
            换句话说,声明配置参数时,参数名首先考虑value
     3、读取配置参数值时,   变量 = 注解对象.参数名()
         回忆:default
           (1)switch
           (2)接口
           (3)注解配置参数的默认值
       数据类型:
        (1)数据类型有哪些:
        (2)变量的数据类型: 都可以
        (3)属性的数据类型什么要求: 都可以
        (4)形参的数据类型什么要求: 都可以
        (5)返回值类型的类型有什么要求: 都可以
        (6)switch(表达式)中表达式的类型要求:4种基本数据类型,2种引用数据类
        (7)注解的配置参数的数据类型的要求:8种基本数据类型,4种引用数据类型(String,Class,枚举,注解)
                 可以是它们的数组类型,例如:int[],String[],枚举类型[]等

    导包:
       (1)import 包.类名;
       (2)import 包.*;
       (3)import static 包.类名.静态成员;
       (4)import static 包.类名.*;
       (3)(4)就是静态导入,JDK1.5之后引入


     JDK1.5增加的:
       (1)foreach
       (2)枚举
       (3)注解
       (4)可变参数
       (5)静态导入 ....
     JDK1.8增加的:
         接口的默认方法和静态方法……

    异常:程序大多数情况下是可以正常,正确的运行,但是有的时候因为一些不可控的因素,导致程序运行异常,中断。
             例如:复制文件时,因为目标盘空间不足
                        聊天功能时,因为网络中断
                        计算两个数的商,用户输入的除数为0     .....
    Java中是如何处理异常?
       当某句代码发生异常时,程序会在这句代码处“停”下来,然后JVM(大多数是JVM,有的时候也可能是程序中自己new)
       会创建一个“合适类型的异常的对象”,并且“抛”出来,JVM会在该句代码的“外围”搜索是否有"try..catch"可以
       “捕获”这个异常,如果可以“捕获”那么程序从"try..catch"下面继续运行,如果没有找对应的"try..catch"
       或者先有的"try..catch"无法“捕获”,那么程序会把这个异常对象“抛”给“上级”,如果上级可以“捕获”,那么就从
       “上级”的"try..catch"下面继续运行,否则接着往上抛,一直到main,如果main也“捕获”不了,就挂了。

    异常的类型:
        java.lang.Throwable:Throwable 类是 Java 语言中所有错误或异常的超类。
        (1)只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。
        (2)只有此类或其子类之一才可以是 catch 子句中的参数类型。 
         “抛”:JVM抛,throw抛
         “抓,捕获”:catch
          两个子类的实例,Error 和 Exception,通常用于指示发生了异常情况。
          通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。  
      分为:
         Error:错误,严重的异常,用于指示合理的应用程序不应该试图捕获(catch)的严重问题。
            例如:VirtualMachineError的两个子类: OutOfMemoryError, StackOverflowError
         Exception:异常
             非受检异常/运行时异常:RuntimeException及其它的子类
             受检异常/编译时异常:除了运行时异常,剩下的都是编译时异常
             编译器在检查程序时,遇到你throw或throws出RuntimeException,编译器不会强制要求你编写try..catch或继续throws处理;
             编译器在检查程序时,遇到你throw或throws出非运行时异常,那么编译器会强制要求你编写try...catch或继续throws否则编译不通过。
     try...catch
        1、语法格式:
           try{
             可能发生异常的语句块;
             }catch(异常类型1  异常名){
             处理该异常的代码;
             }catch(异常类型2  异常名){
              处理该异常的代码;
             }catch(异常类型3  异常名){
             处理该异常的代码;
             }
              ....
     try..catch的执行过程:
      (1)如果try中的代码没有异常,那么try中的代码执行完,正常执行try..catch下面的代码
      (2)如果try中的代码发生异常,首先,try中发生异常那句代码  后面的代码是无法执行,其次,在try中抛出一个
         异常对象,catch会按从上到下,依次尝试“捕获”,如果有一个“捕获”了,下面的catch就不看。
         所有要求子异常类型写上面,父异常类型写下面。
      (3)如果try中的代码发生异常,并且所有的catch都没有“捕获”,那么try..catch下面的代码就无法执行了,
              会把异常对象抛出“上级——调用者”,如果已经是最上级(main),就挂了。
              这个特点有的像:if...else if....
               提示:把字符串类型的数字转成int的值Integer.parseInt(字符串)

    try...catch...finally
        语法格式:
         try{ 

            可能发生异常的语句块;
            }catch(异常类型1  异常名){
            处理该异常的代码;
           }catch(异常类型2  异常名){
            处理该异常的代码;
          }catch(异常类型3  异常名){
            处理该异常的代码;
          }
          ....
         finally{
            无论try中是否发生异常,也不管catch是否能够捕获异常,finally中一定要执行。
             }
           finally块中一般编写:释放资源,断开连接等代码。
            面试题:final,finally,finalize的区别?
                          final是修饰符,修饰类,表示不能被继承,修饰方法,表示不能被重写,修饰变量,表示值不能被修改。
                          finally:无论try中是否发生异常,也不管catch是否能够捕获异常,finally中一定要执行
                          finalize:是一个方法名,在Object类中,表示当对象被“垃圾回收器”回收之前调用,只调用一次。
        形式:
           try..catch
           try..finally
           try..catch...finally

    throws:
       1、用于在声明方法时,显式的声明当前方法中没有处理的异常,要调用者来处理。
            调用者在使用有throws的方法时,用try...catch就知道该catch什么更具体异常,否则就按Exception
       2、语法格式:
          【修饰符】 返回值类型  方法名(【形参列表】)throws 异常列表{
           }
          异常列表可以写好几个,用,分割
       3、关于方法重写
        (1)方法名和形参列表必须相同
        (2)返回值类型
               基本数据类型和void:必须一致
              引用数据类型:<=   子类重写方法的返回值类型<=父类被重写方法的返回值类型
       (3)权限修饰符:>= 子类重写方法的权限修饰符的可见性范围 >= 父类被重写方法的权限修饰符的可见性范围 
       (4)其他修饰符: 哪些不能重写  static,final,private
       (5)抛出的异常列表的类型:<=  子类重写方法抛出的异常类型 <= 父类被重写方法抛出的异常类型

      大多数异常对象是JVM根据情况抛出。有的时候需要手动抛出异常,
         throw:用于手动抛出异常对象
         语法结构:
            throw 异常对象;
            可以代替return语句,即带回异常信息,而且可以结束方法的执行

    自定义异常:
       (1)要继承Throwable或它子类
           一般都继承Exception(编译时异常),或者RuntimeException(运行时异常)
       (2) 异常名要见名知意
       (3)尽量保留父类的两个构造器:一个是无参构造,一个是为message赋值的构造器
       (4)自定义异常必须手动用throw来抛出,JVM无法给你自动抛出
     一个异常:
       (1)类型要见名知意
          例如:ArrayIndexOutOfBoundsException
                    ClassCastException
                    FileNotFoundException
      (2)自己的message消息
               异常对象名.getMessage()可以获取
      (3)堆栈跟踪信息
               异常对象经历的抛出路线,从哪个方法到哪个方法
               异常对象名.printStackTrace();  //Trace痕迹
               System.err:异常信息,默认是红色的
               System.out:普通信息
               System.err和System.out是两个线程,谁先抢到谁先打印

  • 相关阅读:
    一种不求交点确定直线与三角形是否相交的方法
    碰撞边界锯齿的平滑方法
    demo的凹凸贴图效果
    MySQL进阶篇触发器
    MySQL进阶篇索引
    Maven的POM文件详解
    Swagger
    MySQL进阶篇存储过程
    SpringBoot基础篇
    MySQL基础篇多表操作
  • 原文地址:https://www.cnblogs.com/zzz222zzz/p/11601912.html
Copyright © 2011-2022 走看看