流:
在计算机的输入输出操作中各部件之间的数据流动。按传输方向分为输入流和输出流。
Java语言里的流序列中的数据既可以是未经加工的原始二进制数据,也可以是经过一定编码处理后符合某种特定格式的数据。
java.io包中操作文件内容的主要两大类:字节流、字符流。
字节流读取的最小单位是一个字节(1byte=8bit)
字符流一次读取一个字符(1char=2byte=16bit)
所有文件的存储都是字节的,先把文件的字符编码成字节再进行存储
writer类是所有字符输出流的父类
reader类是所有字符输入流的父类
OutputStream类是所有字节输出流的父类
InputStream类是所有字节输入流的父类
对象序列化:
Bean类要实现Serializable,最好给出versionID。
不然程序会一直报java.io.NotSerializableException
泛型:
使用尖括号来指定形式类型参数,只表示类型而不表示值。
堆:堆栈数据结构只允许数据自有序列表的固定端做输入,输出操作。
Stack继承自Vector,实现一个后进先出的堆栈。
队列:队列的数据结构规定:在有序列表中的数据输出,输入是分别由不同端进行处理,输出端称为前端,输入端称为后端。
树:树状结构是一个或者多个节点所构成的有限集合。每棵树必有一特定的节点,称为根节点。节点下可以有零个以上的子节点,各子节点也为子树,拥有自己的子节点。
链表:是一种有序的列表。链表的内容通常存储于内存中分散的位置上。
链表的串联方式:一种是利用数组结构串联的有序列表。一种是以动态内存配置的链表。
集合:
Collection接口中封装了子接口List与Set的常用方法
ArrayList底层是数组,适合查询和修改。
LinkedList底层是双向链表,适合删除与插入,并且线程不安全。
排序时,集合中不能有null元素,会报空指针异常。但可以往集合里装null。
Set:
Hashset可以装任意类型的数据,含null,底层Hash算法查询快
Treeset不能有null,不能手动排序,内含算法会自动排序,底层树算法插入快
是Set的两个实现类,两个类的方法相同,但是方法运行后结果有的不同
set没有下标,不能用for循环遍历数据,foreach和Iterator
Map:
HashMap的键可以是任意类型,值可以是任意类型,包括null
TreeMap的键可以是任意类型(除null),值可以是任意类型(包括null)
键名不能重复,集合中元素会根据键名排序
同样没有下标,不能用for循环遍历,foreach和Iterator
局部变量不能用static修饰
方法内部对变量赋值,不会改变该变量在定义时定义的值,除非这是一个静态变量
可以用char型变量存储一个中文汉字:因为java采用Unicode编码,每个字符占两个字节,而汉字也占两个字节。