java基础 第十二章(异常处理、工具类、集合)

一、异常处理

    1.两种异常:

      (1)程序员自身问题(运行时异常)

      (2)外界问题(可控异常)

    2.两种异常的详细说明

      (1)运行时异常

              当程序发生运行时异常时,程序会中断程序。

              例:p1为对象;

                     p1 p = new p1();

                     p = null;

                     p.sayHello();

                     //这时就会报空指针异常 NullPointerException();

                    //以上语句就等同于

                      throw new NullPointerException();

              运行时异常的种类:

                  throw new NullPointerException(); //空指针异常

                  throw new ArrayIndexOutOfBoundsException(); //数组越界异常

                  throw new ArrithmeticException(); //运算异常

                  throw new ClassCastException(); //类型转换异常

                  throw new SqlException(); //对数据库操作异常

      (2)可控异常

              当程序发生异常时,程序不会中断。

              抛出异常的格式:

                                         try{

                                              //可以有多个异常,但如果不是catch(Exception e),就要写多个catch

                                          }catch(Exception){

            

                                          }finally{

                                               //无论程序中出没出现异常,finally都会执行。

                                          }

                                      例:try{

                                                  class.forName("com.mysql.jdbc.Driver");

                                                  Connection conn = DriverManager.getConnection("abc");

                                              }catch(Exception e){

                                               e.printStackTrace();

                                              }finally{

                                               System.out.println("哈哈");

                                              }

    3.异常树

       (1)throw 与 throws 的区别:

               throw: 用在代码块中,必须抛出异常,无意义。

               throws:用在方法后。

        (2)例:

                     class p1{

                         public void connDataBase() throws Exception{

                             class.forName("com.mysql.jdbc.Driver");

                             Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306");

                         }

                     }

                     public class Main{

                         public static void main(String[] args){

                             p1 p = new p1();

                             try{

                                 p.connDataBase();

                             }catch(Exception e){

                               e.printStackTrace();

                             }

                         }

                     }

二、工具类

    1.Math函数

      (1)abs(); //绝对值

               例:Math.abs(-1); // 1

      (2)round(); //四舍五入

               例:Long a = Math.round(8.78); //9

                      Integer b = Math.round(8.78f); //9

      (3)ceil(); //向上取整

      (4)floor(); //向下取整

      (5)pow(  , );  //求平方

                例:Double a = pow(2.0 , 3.0); //8

      (6)sqrt(); //开平方

      (7)random(); //随机数 [0,1)

    2.Date函数

      (1)例:Date d = new Date();

                       SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd");

      (2)日历类

                Calendar c = Calendar.getInstance();

                set()方法:

                                c.set(Calendar.YEAR,2017);

                                c.set(Calendar.MONTH,0);

                 get()方法:

                                int date = c.get(Calendar.YEAR);

                                int date1 = c.get(Calendar.DATE);

                 getTime()方法:

                                //得到当前的时间

                                 例:Date d = c.getTime();

                                         SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                                         String m = fm.format(d);

三、集合

    可以放不同的数据类型,变长。

    List(父类)——ArrayList(子类),LinkedList(子类)

    1.ArrayList

      (1)用于经常遍历,查找的程序块中。

      (2)放置顺序,就是存储顺序,允许放相同的对象。

      (3)格式:ArrayList<类型> list = new ArrayList<类型>();

      (4)方法:

                        add(); //添加方法

                        add(位置, 内容); //插入内容

                        addAll(); //将另一对象合并

                        remove(); //删除

                        get(); //得到内容

      (5)例:

                     ArrayList list = new ArrayList();

                     list.add(20);

                     list.add("hello world");

    2.LinkList

       格式:LinkedList<类型> list = new LinkedList<类型>();

      (1)做大量添加,删除操作。

      (2)放置顺序就是存储顺序,可以放相同对象。

      (3)方法和ArrayList 相同,但比它多 

               addFirst(); //在开头插入

               addLast(); //在末尾插入

    3.遍历集合

      (1)for循环遍历

                例:for(int i = 0 ; i < list..size(); i++){

                            String ob = list.get(i);

                            System.out.println(ob);

                        }

      (2)迭代遍历

               例:Iterator iter = list.iterator();

                      while(iter.hasNext()){

                          String ob = iter.next();

                          System.out.println(ob);

                      }

      (3)for each遍历

                例:for(String ob : list){

                            System.out.println(ob);

                        }

     set(父类)—— HashSet(子类),TreeSet(子类)

     1.HashSet

      (1)存储顺序,不是放置顺序。

      (2)不能放相同的对象。

      (3)格式:HashSet<类型> set = new HashSet<类型>();

      (4)方法:没有add(位置,内容);

                          没有get();

                          其余和ArrayList,LinkedList一样。

      (5)遍历:没有for()遍历,其余同ArrayList,LinkedList。

    2.TreeSet

      (1)字典顺序存储(升序)。

      (2)不能放相同对象。

      (3)格式:TreeSet<类型> set  = new TreeSet<类型>();

      (4)方法:同HashSet。

      (5)遍历:同HashSet。

        TreeSet设置排序

           写一个规则,创建类,添加接口compare<对象>,书写规则。

           例:compare c = new compare();

                  TreeSet set = new TreeSet(c);

         书写判断是否是同一对象规则

          重写hashcode(), equals() 方法

          步骤:

                   类中右击 ——> source ——> override/…… ——> equals()/hashcode()

                   hashCode(){

                       return 1;

                   }

                    equals(){

                        if(判断规则){

                            return true;

                        }

                    }

 

posted @ 2018-05-18 17:17  猫屎是不是咖啡  阅读(112)  评论(0编辑  收藏  举报