java学习内容--io流、泛型与容器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本周学习了Java语言的输入输出与文件处理、泛型与容器,这两个部分明显比较难学,学习时很痛苦,要记的东西很多,也很枯燥。

一、io流

1、一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

在这里插入图片描述

2、字节流

字节流分为字节输入流和字节输出流。

1、inputSteam

inputStream为字节输出流,是一个接口,用fileinputSteam实现。下面是实现类的方法。
序号 方法及描述
1 public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。
2 protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。
3 public int read(int r)throws IOException{}
这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。
4 public int read(byte[] r) throws IOException{}
这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。
5 public int available() throws IOException{}
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

2、outputStream

这两者没啥大的区别,有个public void write(int w)throws IOException{}方法,可以写数据。

3、缓冲区

字节流输入输出数据都是读或写数据后,储存在次读或写,每次都要调用方法,占用空间,所以才有缓冲区,读或写的数据储存在缓冲区中,在一次释放。
缓冲区有输出缓冲区 BufferedInputStream和输入缓冲区 BufferedoutputStream,输入缓冲区有一个方法readLine()可以一次读取一行字节,newline()为换行方法。

3、字符流

字符流就是特殊的字节流,字符流只能读取文档,不能读取视频、图片等等。
在这里插入图片描述

3、文件处理

file概述:是文件和文件夹的路径的抽象表示对于File而言,其封装的不是正真存在的文件,仅仅是一个路径名,它可以存在也可以不存在将来通过具体操作把这个路径内存转为具体存在。
File类中有两个方法可以用来创建文件夹:
mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它的所有父文件夹。

2、泛型与容器

1、泛型

泛型:提供了编译时类型安全检测机制,本质是参数化类型操作的数据类型被指定为一个参数。
参数化理解:就是将原来具体的类型参数化,在调用用的时候传入具体类型
.格式<类型>:指定一种类型,这个类型可以看作形参
.<类型,类型1…>也可以多个类型
.将来具体调用的时候给定的类型可以看作是实参

泛型类格式:修饰符 class 类名<类型>{…}
public class Generic {} //这里T就是形参可以随意写,调用时候传入类型

泛型方法格式:修饰符 <类型> 返回值 函数名(类型 形参){…}
public void show(T abc){…} //调用这个函数时,传什么类型,T就是对应类型

泛型接口
接口:public interface Fx {}
实现类:public class Generic implements Fx{}

类型通配符为了表示各种泛型List的父类,可用通配符
类型通配符:<?>List<?>:表示元素类型未知的List
这种带通配符的List仅代表它是各种泛型List的父类
类型通配符上限 <?extends 类型> 表示的类型是该类型及其子类
类型通配符下限<?super 类型> 表示的类型是该类型及其父类

泛型就是为了明确数据的数据类型,避免出现类型转化错误。

2容器类

1、理解

容器类就是集合类,特点:提供一种存储空间可变的存储模型,存储数量随时发生改变在这里插入图片描述

2、collection

概述:是单列集合的顶层接口,表示一组对象,这些对象是Collection集合的元素Collection是一个接口,JDK不提供此接口的任何直接实现,它提供更具体的子类接口
在这里插入图片描述
collection的子类接口为list和set
list提供常用的两个实现类arraylist和linkedlist,arraylist的本质是可变数组,查询快、增删慢;linkedlist本质是链表,查询慢、增删快
set底层结构是哈希表,保证唯一性。
HashSet是set的实现类,基本方法与set一致,底层结构是哈希表,HashSet保证唯一性

LinkedHashSet集合哈希表和链表实现的Set接口,有可预测的迭代次序,链表保证了次序,hash表保证了唯一

TreeSet概述:TreeSet 是一个有序的集合,提供有序的Set集合TreeSet中的元素支持两种排序方式
无参构造创建TreeSet时会使用自然排序Comparable,该接口对实现它的每个类的对象添加一个整体排序,就是自然排序,
类的compareTo是自然排序方法创建TreeSet 时提供的 Comparator(比较器排序接口) 进行排序

迭代器:集合的专属遍历方式
在这里插入图片描述
并发修改异常迭代器遍历过程中修改了集合的内容长度,会导致next()获取元素中预期值和实际值不一致,抛出异常
listiterator就不会出现并发修改异常。

总结

其他没写的等下一次再写。
本周的学习,我只能说学了一大堆东西,咋咋乱乱的,学会了但又感觉啥都没学。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余厌厌厌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值