黑马程序员之java学习笔记13

1. 处理异常的两种方式:

 1)try{   }catch(Exception e){   }finally{   }

 2)自己不处理,抛出去。在方法头上使用throws Exception,方法内部使用throw new Exception().

 3) 两种异常处理方式区别:使用throws方式,程序走到异常点就终止了;使用try…catch,处理了异常,程序还可以继续走下去。

2.对于两大异常:Checked Exception(非运行时异常),一定得处理,且有两种方式;Uchecked Exception(运行时异常),可处理也可不处理,推荐不处理。

3. try块放置的是可能出现异常的代码,会动态生成异常对象,并将该异常对象赋给catch

括号中的异常引用e,如catchException e.

4.出现NullPointerException空指针异常的原因:某个引用指向null,但还去调用null的方法,就会出现空指针异常。

6.使用try…catch…finally…方式处理异常,不管有没发生异常,finally中的代码都会执行。

7.自定义异常类:只要一个类直接或是间接的继承Exception类,就是一个自定义的异常类。如:public class MyException extends Exception{ 

      Public MyException(){

      Super();

}

Public MyException(String s){

Super(s);

}

}

8.如何使用自定义的异常类:当使用throws方式时,可以throws MyException,也可以通过多态这样写:throws Exception;当使用try…catch()..方式时,可以这样写catch(MyException e),也可以通过多态这样写catch(Exception e).

9. 一个方法中可以抛出多个异常,异常之间没有先后之分,如: throws MyException, MyException1.那么调用这个带有多个异常的方法时,必须得将所有的异常都处理,那么就得有多个catch代码块,每一个catch代码块捕获一个异常。

10. 方法定义中声明的异常(throws Exception),其作用是让编译器知道这个方法可能会抛出异常,为了消除这个编译错误,在catch代码块中必须的捕获该类型的异常。

11. 当多个catch代码块中的异常存在着继承关系时,捕获父类的异常的catch必须的放在捕获子类异常的catch代码块后面。这是因为在执行catch代码块时是按顺序执行的,当把捕获父类的异常的catch放在最前面时,就会处理所有的异常。这样捕获子类的异常的catch代码块就不会执行到。

12. 如果try…catch..finally中的try块中存在return语句,也会先执行完finally中的代码块,再执行return语句。

13. 如果try…catch..finally中的try块中存在exit(0)语句,就不会执行finally中的代码块。因为当运行到exit(0)方法的时候,就停止了jvm,整个程序就终止了。

14. catch代码块中也可以抛出新的异常,那么方法头中必须声明这个新的异常(throws Exception,在项目中经常这么用,如:

catch(Exception e){

throw  new Exception();

}

15.内部类(inner class):

  1)静态内部类:在一个类中用关键字static再定义一个类。如:

   class OuterClass{

    private static int a=2;

        public static class Inner{

             public void test(){

               System.out.println(a)}}}

Public class InnerClassTest{

   OuterClass.Inner  inner =new OuterClass.Inner();

   Inner.test();

}

a.静态内部类生成实例的方式:OuterClass.Inner inner= new OuterClass.Inner();

b.静态内部类只能访问静态成员变量和静态方法。

 

2)成员内部类:在定义内部类时,没有使用关键字static,该内部类就是成员内部类。如:

   class OuterClass{

    private int a=2;

        public class Inner{

             public void test(){

               System.out.println(a)}}}

Public class InnerClassTest{

   OuterClass.Inner  inner =new OuterClass().new Inner();

   Inner.test();

}

a)      成员内部类生成对象的方式:

A.      当在外部类之外的类中创建对象:OuterClass.Inner  inner =new OuterClass().new Inner();

B.      当在外部类中其他方法中创建对象: Inner inner =this.new Inner();

b)      成员内部类对象访问外部类同名变量方式:OuterClass.this.a;

1)       局部内部类:定义在方法中的内部类,是最少使用的一种内部类,该类不能用public,private,protect,static 修饰,该内部类对象只能访问方法中final变量。外部类不能直接访问局部内部类对象,所以只能在局部内部类中自己创建对象new Inner(),然后通过外部类对象调用方法,间接调用内部类对象。如:new OuterClass().fangfa();

2)       匿名内部类:没有类名,没有构造方法,最重要的特点是它会隐式的继承类或实现接口。

String str = test.get(new Date(){

   });

这里就会创建一个匿名内部类,隐式继承了Date类,并且没有重写Date的任何方法。方法体中是可以重写父类Date的方法的。

       匿名内部类用在方法里面,一般作为方法参数。

 

16. java I/O中的File类:它是java I/O包中的一个类,一个File类的对象表示磁盘上的文件或目录。常用的构造方法是File(String pathname),pathname表示文件的路径+文件的名字。

创建文件的方式:

1)File file = new File(“c:\\text.txt”);表示通过pathname 指定好一个文件。

 2)file.createNewFile();文件不存在就会创建成功并返回一个true.

17.file类的第二种构造方法:File(File parent, String child)其本质就是拼接的创建一个pathname。如:File file = new File(“c:\\abc”); File file2 = new File(file, “d.txt”); file2.createNewFile();就会在c:\abc目录下创建一个d.txt文件。

18. File类中创建目录的方法:public bookean mikdr(),如:File file = new File(“c:/abc/d/e”);

  File.mikdr();就会创建一个目录c:\abc\d\e,前提是目录abcd必须得都存在。如果中间任何一个目录,假如是d,不存在,就会创建失败。要想创建目录成功,绝对目录不能出现中断。而方法mikdirs()就不会有这种限制。

19. File类中的public String[] list()方法的作用是返回抽象路径名(abstract pathname)中的子目录名和文件名。如:File file = new File(“c:\\abc”); String[] names = file.list(); for(String name:names){System.out.println(name);}就会打印出cabc目录下的所有的子目录名和文件名。

20.File类中的delete()方法:File类型引用file.delete(),用于删除文件。

21.File类中String getName(),返回文件名。File.getName().

22.File类中文件过滤方法:String[] list(FilenameFilter FFObj),其中FilenameFilter是一个接口,该接口中有唯一一个方法accept(File dir,String name),该方法的作用是测试一个指定的文件是否应包含在一个file 列表中,包含就返回一个真。其中File类型引用dir表示带测试文件对应的目录,name表示的是待测试的一个个文件名。FFObjt是一个实现了FilenameFilter接口的对象引用。

   代码如下: File file = new File(“d:/aaa/bbb”);

              String[] names = file.list(new Filename(){

                 Public Boolean accept(File dir, String name){

                      If(name.endWith(“.txt”)){//过滤的条件

                         Return true;}

                        Return false;

                                                    });

22.File类中的isDirectory(),isFile()用来判断file类对象是否是一个目录或文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值