Java初级笔记_IO流_1

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、异常

    A:概述

        异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。说白了,就是程         序的非正常情况。
        在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是产生了一个异常对象。

     B:继承体系结构

        

    C:分类

        严重错误:无法通过处理的错误。
        运行时异常:运行时可能会报错,可以不处理。如数学异常。
        编译时异常:编译时无法编译通过。如日期格式化异常

      D:异常处理

        jvm的默认处理方式:
  默认情况下,jvm会采用默认处理方案:
  把异常的全路径名称,原因,及位置等信息显示出来。

   注意:
  如果是jvm的默认处理方式,那么,它会在出问题的地方结束。

        异常处理步骤:

    1、创建异常对象(JDK已定义的异常会自动创建对象,自定义异常需要手动创建)

            2、抛出异常(JDK已有定义的异常会自动过抛出异常,自定义异常需手动抛出)

            3、处理异常       

        将异常捕获并处理

             try...catch...finally
基本格式:
try {
可能有问题的代码;
}catch(异常对象) {
对问题的处理;
}finally {
释放资源;
}


变形格式:
try...catch
try...catch...catch
try...catch...catch...finally
try...finally

              多异常捕获处理:
分别捕获分别处理,每个try对应一个catch
集中捕获分别处理,一个try对应所有catch
          注意:大的异常不能在前边捕获
一次捕获共同处理
注意:不能同时捕获大的异常与小的异常

声明抛出异常与抛出异常

      throws:用于声明函数抛出异常。用于函数声明。是异常对象的处理方式之一。
                      多个异常可以同时声明抛出,用逗号分隔。
              throw:用于抛出异常对象。用于函数内容。
                     当出现JDK异常对象时,JVM会自动创建一个异常对象并抛出。
                     自定义异常对象可以先创建异常对象,再使用throw抛出。抛出后再进行处理:或使用捕获或使用声明抛                      出。

         自定义异常

             如果涉及其他需求,JDK没有提供相应的异常对象,则可以自己定义异常。
             定义格式:继承Exception或者RuntimeException。同时需要带参的构造方法,用于接收异常信息。
class MyException{
public MyException(String message){
super(message);
}
}

        异常常见方法

                重写了toString方法
public String getMessage()
public void printStackTrace()
public void printStackTrace(PrintStream s) 
 

        异常处理注意细节

             如果多个异常,有子父关系,父异常一定要放在最后。
如果多个异常,是平级关系,它们存在的位置没有顺序关系。

            执行顺序:

在try里面的代码会按照从上往下执行,一旦发生问题,
就会产生一个异常对象,去和catch里面进行匹配。
有对应的匹配,就走对应的处理方案。
没有,就找父匹配,有就走对应的处理方案。
如果找不到,那么就由jvm采用默认处理方案。

  JDK7的新特性:在处理多个平级的异常的时候
catch(ExceptionA | ExceptionB | ExceptionC ... e) {

}

    E:面试题:
A:Exception和RuntimeException的区别?
Exception:分为编译期异常和运行期异常。编译期异常是必须处理的。否则,代码不能编译通过。
RuntimeException:运行期异常,不需要编写异常处理代码,但是可能需要修正程序参数或者逻辑代码。
B:throws和throw的区别?
throws:在方法声明上,后面跟的是异常类名。
throws声明后面如果是一个运行时期异常,调用者不需要处理。这种方式没有意义。
throws声明后面跟的是一个编译期异常,调用者是必须处理的。
throw:在方法体中,后面跟的是异常对象名。
throw后面如果抛出的是运行时期异常对象,那么方法上是不需要进行声明的。
throw后面如果抛出的是编译时期异常对象,那么,一般在方法声明上都是要用throws声明该方法有                         异常。
C:finally的面试题
a:final,finally,finalize的特点及区别?
b:如果catch里面有return,请问finally里面的代码还执行吗?
如果执行,是在return前,还是后呢?
c:写一个程序,测试finally里面的操作对结果没有影响。
finally一般只用于释放资源。
D:jvm的默认处理方式?
       F:怎么选择
A:能够自己处理的时候,尽量自己处理。
B:在main方法里面尽量不要抛。
C:将来在实际开发中,我们会把不同的异常给出不同的界面进行显示给用户。
       G:子父关系中的异常处理
class Fu {
public void show() throws Exception{

}
}

class Zi extends Fu {
public void show()  throws RuntimeException{
 
}
}

class Demo {
public static void main(String[] args) {

}
}

子的重写方法中不能抛出比父更大的异常。

二、File

      (1)File概述:

            将文件路径或者文件夹路径封装成的类。实际代表该路径下的文件或者文件夹。方便对文件与文件夹的属性信息进行             操作。

      (2)理解

            因为硬盘上对数据的存储基本上都是以文件存在。为了方便对文件或者文件夹进行操作。java就提供了一个类File             供我们使用。本质上是对路径的封装。
      (3)File类构造方法
A:File file = new File("d:\\a.txt");
B:File file = new File("d:\\","a.txt");
C:File file = new File("d:");
File file2 = new File(file,"a.txt");
  以上三种格式等价。
  (4)File类的功能:
A:创建功能
创建文件:createNewFile()

创建文件夹:mkdir(),mkdirs()

注意:仅仅根据后缀名并不能判断是文件还是文件夹。

B:删除功能

删除文件或者文件夹:
delete()

注意:
A:删除一个带内容的目录,必须先删除内容,在删除目录。
B:java中的删除不走回收站。

C:判断功能
判断file是否存在:exists()
判断file是否是文件:isFile()
判断file是否是文件夹:isDirectory()

D:重名名功能
把旧名称改变为新名称:renameTo()
注意:路径问题。
重命名涉及两个File对象。
将File1重命名成File2
在同一目录下:
file2文件已经存在,重命名失败
file2文件不存在,重命名成功
在不同目录下:
file2文件已经存在,重命名失败
file2文件不存在,剪切成功

E:获取功能
基本获取
获取绝对路径:getAbsolutePath() 
获取定义的路径:getPath() 
获取名称:getName()
获取大小:length()
获取最后修改时间:lastModified()
高级获取
获取指定目录下所有文件或者文件夹的名称数组:list()
获取指定目录下所有文件或者文件夹的File数组:listFiles()
返回所有盘符:listRoots()
文件过滤器:
接口 FilenameFilter  重写accept()方法 dir:文件所在的目录    name:文件名称
方式1,定义类实现FilenameFilter,list(这个类的实例对象)  
方式2,匿名内部类

注意:File对象可以作为参数传递给流的构造函数。

三、递归

(1)在函数内调用函数本身,即方法定义中调用方法本身的现象。
(2)递归注意事项:
    A:要有出口,否则就是死递归。
    B:次数不能太多,否则内存溢出。

    特殊事项:构造方法不能递归定义。
(3)案例:(面试可能见到)
    A:递归求阶乘
    B:递归求兔子问题(斐波那契数列)
    C:递归遍历目录(带内容的目录)
    D:递归删除目录(带内容的目录)

         (4)递归注意事项

            必须在函数内调用该函数本身。
    递归算法所在函数内,必须有函数出口。
    递归次数不能过多,否则会导致内存溢出。


------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值