zoukankan      html  css  js  c++  java
  • JAVA异常处理、常用类、反射、集合

    异常

    异常:在Java中是指被一个方法抛出的对象。

    分类:检查异常、运行时异常、错误

      运行时异常(uncheckd):RuntimeException和其子类

      检查异常(checkd/搜检异常):指Exception和其子类,且不是RuntimeException的子类;它必须经过处理才会找到

    语法:

    try{
        //被保护的代码
    }catch(异常的名称 e1){
        //捕获块
    }

    注意:应先捕获特殊再捕获一般异常;try没有出现异常catch将不会执行

    异常处理的三种选择:

      1)捕获这个异常,不让他沿着调用栈继续向下抛出

      2)捕获这个异常,并继续向下抛出

      3)不捕获这个异常,从而导致方法调用栈中被弹出,导致对象抛出给调用栈下面的main()方法。

    声明异常:

      关键字:throws  在当一个方法没有处理检查异常时使用

      例如:public void deposit(double amount) throws RuntimeException{}

    抛出主动异常:

      关键字:throw   

      运行时异常可以不用声明异常,检查异常必须声明异常

    final关键字:

      用于在try块后创建一个代码块,且他总会运行,不管异常是否发生

      注意:在方法返回之前,final块将会执行

    用户自定义异常:

      1)所有的异常必须是Throwable的子类

       2)想编写一个会被异常自动处理过声明的规则的检查异常,就需要继承Exception类;

         3)如果编写一个运行时异常,就需要继承RuntimeException类

    常用类

    运行平台交互的类:

      System类:记录执行时间, 复制数组,确定当前系统的属性和获取获取系统环境变量等

      Runtime类:可以通过他的静态方法getRuntime()获取对象

    String类:

      StringBuffer类:代表一个类容可变的字符串(方法是线程安全的)

      StringBuilder类:代表字符串对象,性能略高

    Date类:

      DateFormat抽象类:方法返回特定地区格式的DateFormat对象

      SimpleDateFormat类:创建其对象时需要传入日期和时间格式作为格式化的模板

      Calendar抽象类

      GregorianCalendar类:公历日历

    随机数:

      格式例如:生成0-10的随机数 

    Random r=new Random();
    int n1=r.nextInt();
    n1=Math.abs(r.nextInt()%10);
    System.out.println(n1);

    装箱:基本类型 向 引用类型

    拆箱:引用类型 向 基本类型

    正则表达式:

      ;   ^(开始); $(结束);  *(0次或多次);  +(1次或多次);  ?(0次或一次);  {n}(重复n次);  {n,m}(最多m最少n);  .(出 之外的任何单个字符);  x|y(x或y);

      [xyz](所包含的任意一个字符);;  [^xyz](未包含的任意字符);  [a-z](范围);  [^a-z](不在范围内);  (单词边界);  B(非单词边界);  d(一个数字字符);  D(非数字);

      f(换页);   (换行);   (回车);  s(空白);  S(非空白);  w(下划线和任意字符); W(非单词字符);

      正确使用:

        Pattern类:编译正则表达式,创建对象,先调该静态方法compile()返回一个Pattern对象

        Matcher类:解析Pattern,获得对象,调用Pattern对象的matcher()方法

        格式例如:

            

    String name="y_123456";
    Pattern p=Pattern 。compile(正则符);
    Matcher m=p.matcher(name);
    if(matcher.matches()){
    }
    else{
    }

    反射

    Jvam中所包含提供的加载器:

      1)根类加载器:加载核心Java类(jiava.*开头)

      2)扩展类加载器:加载扩展的java类(java.*开头中JAR的类包)

      3)系统加载器:加载自身的类

    类的加载机制:

      1)类的class文件读入内存中后,创建java.lang.util.class对象,一但某个被载入JVM中,同一个类就不会被再次输入

      2)连接:把类的二进制系统数据合并到JRE中

      3)初始化

    反射:

      含义:可以在运行期载入,探知和使用编译期完全未知的类

      加载:class c=class.forname("全限定类名");

      查看所有方法:

    Method[]  motheds=cl.getDeclaredMethods();
        for(Method me: motheds){
                System.out.println(me.getName());
            }

    查看构造器:

            Constructor[] co=cl.getDeclaredConstructors();
            for(Constructor<?> con: co){
                System.out.println(con);
            }

    获取字段:

             Field[] fields = clazz.getDeclaredFields();
             for (Field field : fields) {
              System.out.println(field.getType().getName() + " " +
              field.getName());
            }

    创建对象:

    1         Constructor<?> constructor = cl.getConstructor(String.class, Date.class);
    2         SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
    3         String st="2000-10-12";
    4         Date da=s.parse(st);
    5         Object obj = constructor.newInstance("张三",da);

    调用方法:

    1         Method setAddress = cl.getMethod("setAddress",String.class);
    2         Object adress = setAddress.invoke(obj,"成都");
    3         Method setSex=cl.getMethod("setSex",String.class);
    4         Object sex=setSex.invoke(obj, "男");

    ...表示可变参数

    Java集合框架

    collection接口(控制单列数据):

      分为两个子接口:

        Set接口(没有顺序且不能重复):

          两个重要实现类:

            HashSet:基于哈希算法的set接口实现,没有顺序,不允许出现重复元素

            ThreeSet: 有顺序的

        List接口(有顺序,可以重复)

          两个重要实现类:

            ArrayList:是以数组方式实现,查询效率高,插入删除效率低

            LinkedList:是以链表方式实现,适合频繁增加删除元素时使用(速度快)

          重要方法:

            插入:对象名.add();        返回指定:对象名.get();          替换:对象名.set();         删除:对象名.remove();

          泛型:

             作用:1)保证在集合中元素类型安全;  2)数据类型不用强制转化

             实质:允许在定义接口、类时指定类型参数

             例如:ArrayList<Integer> al=new ArrayList<Integer>;

      Interator接口:用于遍历集合的接口,有一个iterator方法,返回Interator对象

        此接口方法:

          更多元素:hasNaxt();    下一个元素:nest();         删除iterator返回的最后一个元素:remove();

          格式:

     1     public static void main(String[] args) {
     2         MyComparator my=new MyComparator();
     3         List<SortObject> l=new ArrayList<SortObject>();        
     4         SortObject s1=new SortObject(1,4);
     5         SortObject s2=new SortObject(7,9);
     6         SortObject s3=new SortObject(5,6);
     7         l.add(s1);
     8         l.add(s2);
     9         l.add(s3);        
    10         Collections.sort(l,my);
    11         Iterator it = l.iterator();
    12         while(it.hasNext()){            
    13             Object obj = it.next();
    14             System.out.println(obj);
    15         }
    16 
    17     }
    18 
    19 }

    Map接口(控制键值对):

      含义:对应的是一种从键(Key)到值(Value)的对应关系的集合(一对一)

      两个实现类:HashMap;  TreeMap;

      基本方法:

        返回指定键相关的值:get();   向映射中添加键值对: put();    删除所有元素:clear();   删除指定:remove();

    辅助类CollectionsArrays

      Collections用于对集合元素进行排序、查询、修改(静态方法)

        例如排序:Collections.sort(list cmp);

      Arrays操作数组

        例如:Arrays.sort(arr);

    集合当中用size获取数组长度  

  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/wwg1426802735/p/4439147.html
Copyright © 2011-2022 走看看