FOR初学者 IO流,泛型,异常难点总结

IO流:

四个顶层抽象类:

字节流:      字节流可以操作任何数据,但是操作纯文本时容易出现乱码

OutputStream(字节输出流)----->FileOutputStream(具体操作类);

InputStream(字节输入流)----->FileInputStream(具体操作类);

字符流:     字符流用于操作纯文本数据

1.     Reader(字符输入流)--->InputStreamReader(转换流:把字节流转化成字符流)--->FileReader(具体操作流)--->BufferedReader(高效流)

2.      Writer(字符输出流)---->OutputStreamWriter(转换流:把字符流转化成字节流)--->FileWriter(具体操作流)--->BufferedWriter(高效流)

File类-->FileReader/Writer类-->outputStreamWriter/inputStreamReader类||BufferedWriter/BufferedReader类

File file = new File("路径");//File最常见的构造

FileReader fr = new FileReader(file);//普通流构造时里面放的是File类型的对象

BufferedReader br = new BufferedReader(fr)//高效流构造时里面放的是普通流

* BufferedReader高效字符流特殊方法

* public String readLine()  一次读一行,如果读到末尾返回null

* BufferedWriter高效字符流特殊方法

* public void newLine()  换行

异常体系:exception和Error都继承于祖类throwable,

exception又分为RunTimeException与非RunTimeException

异常的处理方式

父类没有的异常子类肯定没有,

捕获异常:  try/catch

//单异常处理

try{

System.out.println(1/0);

}catch(ArithmeticException e) {

System.out.println("MDZZ!");

}

//多异常处理:(一次捕获,多个catch处理)先检测try中哪个出现了异常,然后执行对应catch中的语句,由于java是中断异常处理机制,所以直接执行下面的非异常处理机制的语句

try{

Dateparse= date.parse(s);

System.out.println(1/0);

}catch(ParseException e) {

System.out.println("这是parse异常");

e.printStackTrace();

}catch(ArithmeticException e){

System.out.println("这是数学异常");

System.out.println("MDZZ");

e.printStackTrace();

}

//控制台上输出的是:这是parse异常...................还有显示的位置

//上面的代码也可以修改成另一种形式(不通用)

try{

Dateparse= date.parse(s);

System.out.println(1/0);

}catch(ParseException e|ArithmeticException e) {//不可能两个异常都产生,最多只能产生一个异常,因为产生异常之后中断处理,就不会再执行try里面的语句了

System.out.println("这是parse异常");

e.printStackTrace();

}

声明抛出异常

publicvoidmethod()throwsParseException{//方法后面加throws+可能出现的异常,声明如果出现异常就将异常抛出,谁调用谁去处理异常,调用者也可以选择继续抛出,交给JVM来处理! 如果在定义方法是没有声明抛出,那么在方法中出现的异常会直接交给JVM处理!

String s ="2010-11-28";

DateFormat date =newSimpleDateFormat("yyyy-MM!dd");

Dateparse= date.parse(s);

System.out.println(1/0);

}

自定义异常:

定义格式:如果是编译期异常,则继承exception,如果是运行期异 常则继承RuntimeException,

注意:自定义异常需要手动抛出,使用throw抛出

1.创建异常对象:普通的创建对象

2.抛出异常:使用throw,结束之后表示产生了一个异常

3.处理异常:使用throws或者try/catch来处理

publicclassDemo {

publicstaticvoidmain(String[] args)throwsParseException {

Scanner sc =newScanner(System.in);

//自定义异常的练习

inti = sc.nextInt();

if(i<50>){

Over50 o50 =newOver50();

throwo50;//手动抛出异常

}

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

}

classOver50extendsRuntimeException{//定义了over50运行异常类

}

泛型

1.概述:用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数传递

2.特点: 泛型的使用只有在创建对象时,数据类型时才能够确定,在编译成class文件时会被擦除,在运行时期会被补偿

泛型类:直接在类名后加<变量,通常为E或者T>

使用:创建对象时确定类型

泛型方法:

//简单的将任意类型的一个t打印出来

publicvoidmethod(T t){

System.out.println(t.toString());

}

泛型接口:

定义格式:直接在接口后面加;

//定义泛型接口

publicinterfaceMyInterface{

publicabstractvoidmethod(T t);

}

//泛型接口的使用

1.定义类时,实现接口,此时将接口中的数据类型确定下来,这时的类是没有泛型的,其所有类型都已经确定下来了.

classDemo1implementsMyInterface{

publicvoidmethod(String s) {

}

}

2.定义类时,实现接口,此时接口中的数据类型还没有确定下来,这时的类也应该要有泛型,其所有类型要等创建对象的时候才能被定下来.

classDemo1implementsMyInterface{

publicvoidmethod(T t) {

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,187评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,302评论 0 62
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 3,203评论 3 10
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,300评论 1 0
  • 执教者:胡秋娟 时间:2016.11.22 图片导入 学生作图:作点A关于x轴、y轴的对称点。 小组合作:发现点A...
    王家雄阅读 666评论 0 0

友情链接更多精彩内容