黑马程序员----,编译异常,运行异常。自定义异常,IO流技术,分类,

来源:互联网 发布:知乎专栏可以随意开吗 编辑:程序博客网 时间:2024/05/16 15:05


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

1.      第十九天回顾。Map集合

  Map接口4个方法 pub getkeySet entrySet

  获取方式两种,代码熟练度

  HashMap,Hashtable区别,底层都是哈希表,HashMap线程不安全,允许存储null,Hashtable线程安全,不允许存储null,存储到集合的对象hashCodeequals

   TreeMap 红黑树,线程不安全,存储对象具备自然顺序,或者,比较器

   Properties继承自Hashtable,线程安全的集合,IO流结合使用 gettPropertysetProperty

   Collections sortreverseOrder binarySearch synchronized

   数组集合互换,Arrays.asList  Collection toArray

   异常:体系Throwable  Exception  RuntimeException

   try..catch 结构语法。 throwthorws的用法区别

   finally 必须执行,不要写return

 

2.      第二十天学习内容,编译异常,运行异常。自定义异常,子类父类重写方法中的异常。IO流技术,分类,每个类的顶层父类--抽象类。 IO技术写文件,读取文件

 

3.      编译异常和运行异常

  编译时期异常:当你调用一个方法,这个方法抛出异常,调用者必须处理,否则编译失败,处理方式可以try  可以抛

  运行时起异常:RuntimeException类,和他的所有子类,都称为运行时起异常,方法中如果抛出的异常是运行时期异常,方法的声明上不需要throws,对于调用者,不需要try catch处理异常。

  运行时期异常的设计初衷:运行时起异常不能出现的,一旦发生,不要处理异常。程序必须停下,修改源代码。

  运行时期的异常,一旦反生了,后面所有程序不会在执行,出现的频率一般在于对方乱传参数,导致程序无法执行,请你使用运行时期异常

  IndexOutOfBoundsException,越界(字符串,和数组) NullPointerException空指针

  ClassCastException 类型转换异常NoSuchElementException没有元素被取出

  IllegalArgumentException 无效参数异常

 

4.      自定义的异常

  Java中异常体系,将很多的情况都做了异常封装,但是实际的开发中,不可能把所有的异常都描述完毕,需要自定义的异常,用来描述自己程序中可能发生的异常

  自定义异常步骤:

     定义类,后缀名Exception继承Exception类,或者继承RuntimeException

     异常信息,自定义的异常类的构造方法,把异常信息使用super传递到父类

 注意:只有异常类,才具备可抛性 throw new 异常体系的类

 

  通过刚才案例:

       如果一个方法中,抛出多个异常,必须要throws声明多个异常(运行时起除外)

       调用者,使用多个catch进行异常的捕获

   多个catch中,最大(继承关系)的父类,写在最后面,否则编译失败

 

5.      子类父类中的异常抛出

  前提:子类重写父类的方法

l  父类的方法抛出了异常,子类重写后,异常:父类抛异常,子类可抛可不抛,但是,如果子类抛,不能抛出比父类还大的异常

l  父类的方法不抛异常,子类重写后,子类不能抛出异常。如果子类重写的方法中,调用了一个抛异常的方法,子类别无选择,只能try...catch处理异常

 

6.      IO流概述

  处理设备之间的数据传输:设备计算机中存储设备,硬盘,U盘,手机,可能是另一台主机

  Java对数据的操作,通过流的形式。操作存储设备中的数据,流技术实现,程序和设备之间建立连接通道,数据流。I Input 输入 O Output输出

  字符流: 开始JDK1.1  字符流专门用于操作文本文件,记事本可以打开的,人可以看懂的文件。 每次操作1个字符 16个二进制,去查询本机默认的编码表。方便Java程序操作纯文本。 .txt  .java  .html .xml  .css

 

  字节流:开始JDK1.0  字节流操作文件是任意文件。每次操作1个字节8个二进制。不查询编码表 。

 

  按照流向分,输入流和输出流

  输入: 程序读取文件

  输出: 程序写入文件

 

7.      IO流的分类

 字符输出流: 写文本文件的,抽象基类java.io.Writer

 写的方法 write,很多重载形式,写字符数组,单个字符,字符串,字符数组一部分,字符串的一部分。 flush 刷新流的缓冲  close关闭流对象

 

 字符输入流:读取文本文件的,抽象基类java.io.Reader

 读的方法 read,很多重载形式,读取单个字符,字符数组,字符数组一部分。close关闭流对象

 

 字节输出流:写任意的文件,抽象基类java.io.OutputStream

 写的方法 write,很多重载形式,写单个字节,字节数组,字节数组一部分。 close关闭流对象

 

 字节输入流:读取任意文件,抽象基类java.io.InputStream

 读的方法 read,很多重载形式,读取单个字节,字节数组,字节数组一部分。close关闭流对象

 

 IO流中的所有类的命名法则:后缀都是父类名,前面都是可以操作的文件名,流向名

  FileInputStream  FileReader ObjectInputStream InputStreamReader

8.      IO流的书写

  IO使用,导入java.io包

  IO流类中的方法,大多数都会抛出异常,调用者try ,, throws

  IO流对象,没有实际的功能操作文件,依赖操作系统来实现功能,流对象用完后,一定要关闭资源

 

9.      字符输出流--写文本文件

  Writer类,抽象的,找子类FileWriter 写入字符文件的便捷类

  创建子类对象,需要使用子类的构造器,传递String文件名

  子类对象调用父类方法write写文件

  关闭资源

  创建对象,调用方法写,write方法是把数据写在了内存中,flush刷新该流的缓冲,把数据从内存刷到目的文件.

  字符流写文件必须刷新,如果不刷新数据在内存中,但是只要进行了刷新数据肯定走向目的文件

  关闭流对象 close()关闭之前,先走刷新  close(){ flush()} 一旦流对象关闭,不能再次使用

 

10.  FileWriter类的其他写入方式

   追加写入,现在的内容需要进行后续的追加。利用FileWriter类的构造方法,传递true可以实现文件的追加写入

  写单个的字符  write(int i)

  写字符数组  write(char[] c)

  写字符数组一部分write(char[] c,int start,int length)

 

11.  字符输入流读取文件

  Reader类,抽象类,找子类FileReader读取字符文件的便捷类

  创建子类对象,需要使用子类构造器,传递String文件名

  在调用父类方法read读取文件

  关闭资源

 

  读取单个字符  int read() 每次读取1个字符,返回码值,read方法每执行一次,自动的向后读取一个字符,读取到文件末尾,返回-1

 

12.  读入字符数组

  数组在读取过程中,起到了缓冲的作用,提高读取的效率

  读取单个字符,在文档小的时候,速度没有什么影响,文档很大,读取单个字符串,速度就会慢许多

  int  read(字符数组) 数组的表现,返回值代表了什么

  数组中,存储到是读取到的字符,返回值,每次读取后数组中存储的有效字符个数

  到达文件末尾,返回-1

 

13.  文件的复制效果--带异常处理

  把c盘下的文本文件,复制到d盘

 读取和写入有两种方式,读取和写入单个字符,读取和写入字符数组

 FileReader读取源文件,数据源

 FileWriter写入目的文件,数据目的

 

14.   

0 0
原创粉丝点击