Java学习日志(笔记)

stream流:


1.在java中,得益于Lambda所带来的函数式编程,引入了一个全新的stream流概念。
可以简化集合和数组操作的Api。(进行一次性的筛选操作等。)

2.核心思想:
2.1:先得到集合或者数组的Stream流,(相当于一根传送带。)
2.2:将集合或数组中的元素放上去。
2.3:使用Stream简化的API来方便的对元素进行操作。

3.Stream流的三类方法:

3.1:获取Stream流,创建一条流水线,并把集合或者数组中的元素放上去。
default Stream <E> stream();(获取集合的Stream流。)

public static <T> Stream<T> stream(T[] array);获取当前数组的stream流。

public static <T> stream<T> of(T...values)获取当前数组/可变数据的stream流。

3.2:中间方法。流水线上的方法,一次操作完毕之后,还可以进行其他操作。

注意:中间方法也称为非终结方法,调用完成后返回新的Stream可以继续使用,支持链式编程。

在stream流中是对已知集合或数组中的元素进行操作,并不能修改原数组或集合本身。

3.3:终结方法。一条传送带的末尾,是stream流的终结方法。(把数组或集合的元素操作完毕了,就要拿走使用。)
void forEach(Consumer action)对此流的每个元素执行遍历操作。

long count ()返回流中的元素数。

异常:
程序在编译或者执行的过程中可能出现的问题。(数组越界、空指针、0作除数等。)(语法错误不算。)

一旦出现异常,如果没有提前处理,程序会退出jvm虚拟机而直接终止死亡。
研究异常并且避免异常,提前处理,体现程序的安全性和健壮性。

异常分为:
1:运行时异常。(运行时出现。)

常见的有:
数组索引越界异常:ArrayIndexOutOfBoundsException

空指针异常:NullPointerException,直接输出没有问题,但是调用空指针的变量功能就会报错。

数学操作异常:ArithmeticException

类型转换异常:ClassCastException

数字转换异常:NumberFormatException

2:编译时异常。(编译时出现。一般是提醒你代码可能出错。)


异常的默认处理机制:

1.默认在出错的地方创建一个异常对象:ArithmeticException。

2.在方法中:从异常出现的地方抛出给调用者,层层抛出最终抛给Jvm虚拟机。

3.虚拟机接收到了异常对象,在控制台直接输出异常信息。

4.在异常处结束程序。

5.程序已经结束,异常出现处以后的代码无法执行。

一般的异常处理形式:

1.默认方法,层层抛出。(throws方法。)

形式为:
方法 throws Exception{
}

2.将异常进行捕获处理。

形式为:
try{可能会出现异常的代码}
catch(异常类型1 变量){如果出现了异常1,则要进行的代码。}
catch(异常类型2 变量){如果出现了异常2,则要进行的代码。}

建议写成以下格式:

try{可能会出现异常的代码}
catch(Exception e){
e.printStackTrace();//直接打印异常信息。}
!!Exception可以捕获处理一切异常类型!!
使用此种方法,程序可以继续往下执行。

3.将异常先抛给调用者,由调用者捕获处理。
3.1:方法直接将异常通过rhrows抛出给调用者。
3.2:调用者收到异常后进行捕获处理。


自定义异常:

使通过异常的方式管理和限制代码。

定义一个异常类继承Exception。

重写构造器。

再出现异常的地方用throw new自定义对象抛出。


日志:
记录程序运行过程中的信息,并可以进行永久存储。

1.优势:
1.1:可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。
1.2:可以随时以开关的形式控制是否记录日志,无需修改源代码。

IO流:
即输入/输出流,用来将文件或网络中的数据读到内存中(Input)、或将内存中的数据写入文件或网络中。(Output)

1.字节流:适合读写任何文件。

父类:InputStream、OutputStream。

字节输入流(FileInputStream)、字节输出流(FileOutputStream)。低级实现类。可以通过字节或字节数组对数据进行读或写。

字节缓冲输入流(BufferedInputStream)、字节缓冲输出流(BufferedOutputStream)。
高级实现类。使用时构造器里要包一个低级实现类对象,通过缓冲区机制加快读写速度。

字节打印流:PrintStream直接简单高效的将数据写入文件。(构造器中包一个低级类对象)

2.字符流:只适合读写文本文件。
父类:Reader、Writer
字符输入流(FileReader),字符输出流(FileWriter)。低级实现类,可以通过字符或字符数组对数据进行读或写。

字符缓冲输入流(BufferedReader)、字符缓冲输出流(BuffereWriter)。高级实现类。使用时构造器里包一个低级实现类对象,通过缓冲区机制加快读写速度。

字符打印流:PrintWriter直接简单高效地将数据写入文件。(构造器中包一个低级类对象)


对象序列化:将对象存到文件中去。
反序列化:将文件中的对象读出。

使用到的io流:ObjectOutputStream、ObjectInputStream(属于字节io流高级类,使用时包一个低级类。)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值