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获取数组长度  

  • 相关阅读:
    s3c2440 nand flash 拷贝实验
    DE270数字系统设计(4)基于Nios的LCD显示
    DE270数字系统设计实验(3)移位寄存器
    s3c2440启动时的内存拷贝过程分析
    s3c2440基本io/ports led点亮
    (转)X11/Xlib.h:没有该文件或目录
    NAND Flash读写技术
    Http中ContentType的取值讲解
    Json对象和Json字符串的区别
    table() function
  • 原文地址:https://www.cnblogs.com/wwg1426802735/p/4439147.html
Copyright © 2011-2022 走看看