java基础总结三
IO流
1.IO流用来处理设备之间的数据传输,java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中。
2.流按操作数据分为两种:字节流与字符流。
3.流按流向分为:输入流,输出流。
IO流常用的基类:
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader,Writer
注意:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
eg:InputStream的子类:FileInputStream
Reader的子类:FileReader
IO程序的书写:
记得要在finally中对流进行关闭
1.有了垃圾回收机制为什么还要调用close方法进来关闭呢?
流不单在内存中分配了空间,也在操作系统占有了资源,java的gc是能从内存中回收不使用的对象,但对操作系统分配的资源是无能为力的,所以就要调用close()方法来通知OS来释放这个资源。
字符流---创建文件
创建流对象,建立数据存放文件
FileWriter fw=new FileWriter("Text.txt");
调用流对象的写入方法,将数据写入流
fw.write("text");
关闭流资源,并将流中的数据清空到文件中
fw.close();
字符流--读取文件
建立一个流对象,将以存在的一个文件加载进流
FileReader fr=new FileReader("Test.txt");
创建一个临时存放数据的数组
char[] ch=new char[1024];
调用流对象的读取方法将流中的数据读入到数组中。
frread(ch);
注意:
定义文件路径时,可以用"/"或者"\"。
在创建一个文件时,如果目录下有同名文件将被覆盖。
在读取文件时,必须保证该文件已存在,否则出异常。
字符流的缓冲区:
缓冲区的出现提高了对数据的读写效率。
对应类:BufferWriter BufferReader
缓冲区要结合流才可以使用
在流 基础上对流的功能进行了增强。
字节流
基本操作与字符流类相同
但它不仅可以操作字符,还可以操作其他媒体文件
字节流缓冲区
同样是提高了字节流的读写效率
转换流
inputStreamReader,OutputStreamWriter
转换流 的由来:
字符流与字节流之间的桥梁
方便了字符流和字节流之间的操作
转换流的应用
字节流中的数据都是字符时,转成字符流操作更高效
标准的输入输出流
System 类中的字段:in out
它们各代表了系统标准的输入和输出设备
默认输入设备是键盘,输出设备是显示器
System.in的类型是InputStream
System.out的类型是PrintStream,是OutputStream的子类FilterOutputStream的子类
流的基本应用
1.流是用来处理数据的,处理数据时,一定要先明确数据源,与数据目的地。
2.数据源可以是文件,可以是键盘。
3.数据目的地可以是文件,显示器,或者其他设备。
4.流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理,转换处理。
File类:
用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作
File对象可以作为参数传递给流的构造函数
递归:
递归就是函数自己调用自己
注意:递归时一定要明确结束条件
IO包的其他类:
RandomAccessFile随机访问文件,自身具备读写的方法。通过skipBytes(int x),seek(int x)来达到随机访问。
管道流:PipedInputStream和PipedOutputStream输入输出可以直接进行连接,通过结合线程使用。
打印流:PrintWriter与PrintStream可以直接操作输入流和文件
序列流:SequenceInputStream对多个流进行合并
操作对象:ObjectInputStream与ObjectOutputStream,被操作的对象需要实现Serializable(标记接口)
操作基本数据类型:DataInputStream与DataOutputStream
操作字节数组:ByteArrayInputStream与ByteArrayOutputStream
操作字符数组:CharArrayReader与CharArrayWriter
操作字符串:StringReader与StringWriter
字符编码:
通过子类转换流来完成:InputStreamReader OutputStreamWriter
在对两个对象进行构造时,可以加入字符集。
常见码表信息:
ASCII:美国标准信息交换码。用一个字节的7位可以表示。
ISO8859-1:拉丁码表。欧洲码表用一个字节的8位表示。
GB2312:中国的中文编码表。
GBK:中国的中文编码表升级,融合了更多的中文文字符号。
Unicode:国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是unicode
UTF-8:最多用三个字节来表示一个字符
GUI(Graphical User Interface)图形用户接口
CLI Command Line User Inerface 命令行用户接口
java.awt:需要调用本地系统方法实现功能。属于重量级控件。会导致有可能在不同的操作系统,用户界面不一样。
javax.Swing在awt的基础上,建立了一套图形界面系统,其中提供了更多的组件而且完全由java实现。增强了移植性,属于轻量级、
常见的布局管理器:
FlowLayout(流式布局管理器)从左到右的顺序排列。
Panel默认的布局管理器。BorderLayout(边界布局管理器)东,南,西,北,中
Frame默认的布局管理器。GridLayout(网格布局管理器)规矩的矩阵
CardLayout(卡片布局管理器)选项卡
GridBagLayout(网格包布局管理器)非规则的矩阵
事件监听机制
事件源 事件 监听器 事件处理