Java学习笔记(三)

十二、Object类

    在Java中所有的类都有一个公共的父类就是类,一个类只要没有明显的继承一个类,则肯定是Object类的子类。

    主要是两个方法equals(Object):对象比较(比较的是地址信息)

    toString():在直接输出对象的时候会默认调用类中的toString()方法

    Object类可以接收任意引用类型的对象

十三、内部类

    当类中需要使用一些数据,不会再其他类中使用,但是使用的比较频繁,此时,我们可以定义成内部类。

    成员内部类

        内部类对象,一般都是在外部类中使用。

         内部类中可以直接访问外部类的成员

    匿名内部

        在方法内写。

           格式:

              父类|抽象类|接口   变量 = new 父类|抽象类|接口(){

                        方法的重写

              };

十四、包

    package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可。

    包的定义格式

            package 包名称.子包名称 ;

    导入包格式

        import 包名称.子包名称.类名称 ;   手工导入所需要的类

        import 包名称.子包名称.* ;        由JVM自动加载所需要的类

注意:用“importmypackage.*;”语句只是导入了该包中的所有类和接口,并不能导入该包下的子包中的所有类和接口。

十五、访问权限

Java学习笔记(三)
十六、异常

    定义

    Java通过面向对象的方法来处理程序错误,在Java中,错误称为异常

    异常的分类

    所有的异常都直接或间接地继承Throwable类

    异常分成两大类:Error类和Exception类(后者是Java中需要大量处理的)

    除了Java类库中所定义的异常类外,用户可以通过继承已有的异常类来定义自己的异常类,并在程序中使用(利用throw产生,catch捕捉)

Java学习笔记(三)

    Error:由JVM生成并抛出,Java程序并不做处理

    Runtime Exception(非检查性异常):JVM在运行时生成的异常,如被0除、下标越界等,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大,因此由系统检测,用户可不对处理,系统将它们交给缺省的异常处理程序,必要时,用户可对其处理。

    Exception:一般程序中可预知的问题,其产生的异常可能会带来意想不到的结果,因此要求Java程序必须捕获或声明所有的非运行时异常

    捕获异常

        格式:

        try{

           //接受监视的程序块,在此区域内发生

           //的异常,由catch中指定的程序处理;

        }catch(要处理的异常种类和标识符){

           //处理异常;

        }catch(要处理的异常种类和标识符){

           //处理异常;

        }

        …

        }finally{

           //最终处理;

        //无论产生不产生异常,都会进行的操作

        //通常在这里进行资源的清楚工作,比如关闭打开的文件等

        }

注意:多个catch中,从上往下的异常可以是同级别的异常类型或者是子父关系,即父类写在下面

       声明异常:

              如果在一个方法中生成了例外,但是该方法并不处理它产生的例外,而是沿着调用层次向上传递,由调用它的方法来处理这些例外,叫声明例外。

              即在方法定义时在方法名后面加throws 异常名  

                比如:public int read() throws IOException { … }

       抛出异常:

              格式:throw  Throwable或其子类的实例

            比如 throw new ArrayIndexOutOfBoundsException();

    创建自己的异常:

            自定义异常同样要用try-catch-finally捕获,但必须由用户自己抛出(throw newMyException)。

            自定义异常必须继承自Throwable或Exception类,建议用Exception类。

            自定义例外的一般形式:

            class MyException extends Exception

            {

                       …

            }

       throw和throws的区别:

            throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常

            throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)

                        public void function() throws Exception{......}

            当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理

    throw与throws的比较

            1、throws出现在方法函数头;而throw出现在函数体。

            2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。

            3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。