JAVA总结.docx

上传人:b****8 文档编号:10447428 上传时间:2023-02-11 格式:DOCX 页数:22 大小:682.61KB
下载 相关 举报
JAVA总结.docx_第1页
第1页 / 共22页
JAVA总结.docx_第2页
第2页 / 共22页
JAVA总结.docx_第3页
第3页 / 共22页
JAVA总结.docx_第4页
第4页 / 共22页
JAVA总结.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

JAVA总结.docx

《JAVA总结.docx》由会员分享,可在线阅读,更多相关《JAVA总结.docx(22页珍藏版)》请在冰豆网上搜索。

JAVA总结.docx

JAVA总结

第八章流

1、输入/输出流的分类:

►java.io包中定义了多个流类型(类或抽象类)来实

现输入/输出功能;可以从不同的角度对其进行分类:

▪按数据流的方向不同可以分为输入流和输出流。

(以程序的角度来考虑)

▪按处理数据单位不同可以分为字节流和字符流。

▪按照功能不同可以分为节点流和处理流。

►J2SDK所提供的所有流类型位于包java.io内都分别继承自以下四种抽象流类型。

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

2、节点流和处理流:

(1)节点流为可以从一个特定的数据源(节点)读写数据(如:

文件,内存)

(2)处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。

(1)InputStream:

继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8bit);下图中深色为节点流,浅色为处理流。

InputStream的基本方法:

//读取一个字节并以整数的形式返回(0~255),

//如果返回-1已到输入流的末尾。

intread()throwsIOException

//读取一系列字节并存储到一个数组buffer,

//返回实际读取的字节数,如果读取前已到输入流的末尾返回-1

intread(byte[]buffer)throwsIOException

//读取length个字节

//并存储到一个字节数组buffer,从off位置开始存,最多len

//返回实际读取的字节数,如果读取前以到输入流的末尾返回-1

intread(byte[]buffer,intoff,intlen)

throwsIOException

//关闭流释放内存资源

voidclose()throwsIOException

(2)OutputStream:

继承自OutputSteam的流是用于程序中输入数据,且数据的单位为字节(8bit);下图中深色为节点流,浅色为处理流。

OutputStream的基本方法:

//向输出流中写入一个字节数据,该字节数据为参数b的低8位

voidwrite(intb)throwsIOException

//将一个字节类型的数组中的数据写入输出流

voidwrite(byte[]b)throwsIOException

//将一个字节类型的数组中的从指定位置(off)开始的

//len个字节写入到输出流

voidwrite(byte[]b,intoff,intlen)

throwsIOException

//关闭流释放内存资源

voidclose()throwsIOException

//将输出流中缓冲的数据全部写出到目的地

voidflush()throwsIOException

(3)Reader:

继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit);下图中深色为节点流,浅色的为处理流

Reader的基本方法:

//读取一个字符并以整数的形式返回(0~255),

//如果返回-1已到输入流的末尾。

intread()throwsIOException

//读取一系列字符并存储到一个数组buffer,

//返回实际读取的字符数,如果读取前已到输入流的末尾返回-1

intread(char[]cbuf)throwsIOException

//读取length个字符

//并存储到一个数组buffer,从off位置开始存,最多读取len

//返回实际读取的字符数,如果读取前以到输入流的末尾返回-1

intread(char[]cbuf,intoff,intlen)

throwsIOException

//关闭流释放内存资源

voidclose()throwsIOException

(4)Writer:

继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16bit);下图中深色为节点流,浅色为处理流。

Writer的基本方法:

//向输出流中写入一个字符数据,该字节数据为参数b的低16位

voidwrite(intc)throwsIOException

//将一个字符类型的数组中的数据写入输出流,

voidwrite(char[]cbuf)throwsIOException

//将一个字符类型的数组中的从指定位置(offset)开始的

//length个字符写入到输出流

voidwrite(char[]cbuf,intoffset,intlength)

throwsIOException

//将一个字符串中的字符写入到输出流

voidwrite(Stringstring)throwsIOException

//将一个字符串从offset开始的length个字符写入到输出流

voidwrite(Stringstring,intoffset,intlength)

throwsIOException

//关闭流释放内存资源

voidclose()throwsIOException

//将输出流中缓冲的数据全部写出到目的地

voidflush()throwsIOException

4、节点流类型:

5、访问文件:

FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。

FileInputStream和FileOutputStream的常用构造方法:

FileInputStream(Stringname)throwsFileNotFoundException

FileInputStream(Filefile)throwsFileNotFoundException

FileOutputStream(Stringname)throwsFileNotFoundException

FileOutputStream(Filefile)throwsFileNotFoundException

FileOutputStream(Filefile,booleanappend)

throwsFileNotFoundException

FileInputSteam和FileOutputStream类支持其父类InputStream和OutputStream所提供的数据读写方法。

注意:

在实例化FileInputStream和FileOutputSteam流时要用try-catch语句以处理其可能抛出的FileNotFoundException。

在读写数据时也要用try-catch语句以处理可能抛出的IOException。

FileNotFoundException是IOException的子类

例:

TestFileInputStream.java/TestFileOutputStream.java

FileReader和FileWriter分别继承自Reader和Writer,FileInputSteam与FileOutputStream类似,所不同的时FileReader和FileWriter向文件输入和输出的数据单位为字符。

FileReader和FileWriter的常用构造方法:

publicFileWriter(Filefile)throwsIOException

publicFileWriter(Filefile,booleanappend)

throwsIOException

publicFileWriter(StringfileName)throwsIOException

publicFileWriter(StringfileName,booleanappend)

throwsIOException

publicFileReader(StringfileName)

throwsFileNotFoundException

publicFileReader(Filefile)

throwsFileNotFoundException

6、处理流类型:

7、缓冲流:

缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。

J2SDK提供了四种缓存流,其常用的构造方法为:

BufferedReader(Readerin)

BufferedReader(Readerin,intsz)//sz为自定义缓存区的大小

BufferedWriter(Writerout)

BufferedWriter(Writerout,intsz)

BufferedInputStream(InputStreamin)

BufferedInputStream(InputStreamin,intsize)

BufferedOutputStream(OutputStreamout)

BufferedOutputStream(OutputStreamout,intsize)

►BufferedReader提供了readLine方法用于读取一行字符串(以\r或\n分隔)。

►BufferedWriter提供了newLine用于写入一个行分隔符。

►对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。

8、转换流:

InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。

InputStreamReader需要和InputStream“套接”。

OutpStreamWriter需要和OutputStream“套接”。

转换流在构造时可以指定其编码集合,例如:

InputStreamisr=newInputStreamReader

(System.in,“ISO8859_1”)

9、Print流:

●PrintWriter和PrintStream都属于输出流,分别针对与字符和字节。

●PrintWriter和PrintStream提供了重载的print

●Println方法用于多种数据类型的输出。

●PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。

PrintWriter和PrintStream有自动flush功能。

PrintWriter(Writerout)

PrintWriter(Writerout,booleanautoFlush)

PrintWriter(OutputStreamout)

PrintWriter(OutputStreamout,booleanautoFlush)

PrintStream(OutputStreamout)

PrintStream(OutputStreamout,booleanautoFlush)

10总结:

putStream/OutputStream//最基础的抽象类,字节流

Reader/Writer//最基础的抽象类,字符流

FileInputStream/FileOutputStream//File打头的用来操作文件,字节流

FileReader/FileWriter//File打头的用来操作文件,字符流

BufferedInputStream/BufferedOutputStream//带缓冲的,字节流

BufferedReader/BufferedWriter//带缓冲的,字符流

ByteArrayInputStream/ByteArrayOutputStream//读写内存中的字符数组

InputStreamReader/OutputStreamWriter//字节转字符,转化流

DataInputStream/DataOutputStream//读写基本数据类型

PrintStream/PrintWriter//都是输出流,不抛出异常,自动flush

ObjectInputStream/ObjectOutputStream//读写Object

Serializable接口à标记性接口

Externalizableà自己控制序列化

Transientà

第9章:

Java多线程机制

1、线程的基本概念:

线程是一个程序内部的顺序控制流。

2、线程和进程的区别:

(1)每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。

(2)线程可以看成时轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

(3)多进程:

在操作系统中能同时运行多个任务(程序)

(4)多线程:

在同一应用程序中有多个顺序流同时执行

Java的线程是通过java.lang.Thread类来实现的。

►VM启动时会有一个由主方法(publicstaticvoidmain(){})所定义的线程。

►可以通过创建Thread的实例来创建新的线程。

►每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。

►通过调用Thead类的start()方法来启动一个线程。

3、线程的创建和启动:

可以有两种方式创建新的线程。

第一种:

定义线程类实现Runnable接口

ThreadmyThread=newThead(target)//target为Runnable接口类型。

Runnable中只有一个方法:

publicvoidrun();用以定义线程运行体。

使用Runnable接口可以为多个线程提供共享的数据。

在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法:

publicstaticThreadcurrentThread()获取当前线程的引用。

第二种:

可以定义一个Thread的子类并重写其run方法如:

classMyThreadextendsThead{

publicvoidrun(){…}

}

然后生成该类的对象:

MyThreadmyThread=newMyThead(…)

使用那种好呢?

4、线程状态转换:

5、线程控制基本方法:

(1)sleep/join/yield方法:

►sleep方法:

可以调用Thread的静态方法:

publicstaticvoidsleep(longmillis)throwsInterruptedException

使得当前线程休眠(暂时停止执行millis毫秒)。

由于是静态方法,sleep可以由类名直接调用:

Thread.sleep(…)

►join方法:

合并某个线程

►yield方法:

让出CPU,给其他线程执行的机会

6、线程模式:

▪两种线程模式:

►协作式:

一个线程保留对处理器的控制直到它自己决定放弃

▪速度快、代价低

▪用户编程非常麻烦

►抢先式:

系统可以任意的从线程中夺回对CPU的控制权,再把控制权分给其它的线程。

▪两次切换之间的时间间隔就叫做时间片

▪效率不如协作式高,OS核心必须负责管理线程

▪简化编程,而且使程序更加可靠

▪多数线程的调度是抢先式的

7、线程的优先级别:

▪Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程。

线程调度器按照线程的优先级决定应调度哪个线程来执行。

▪线程的优先级用数字表示,范围从1到10,一个线程的缺省优先级是5。

Thread.MIN_PRIORITY=1

Thread.MAX_PRIORITY=10

Thread.NORM_PRIORITY=5

▪使用下述线方法获得或设置线程对象的优先级。

intgetPriority();

voidsetPriority(intnewPriority);

▪不同平台上的优先级

Solaris:

相同优先级的线程不能相互抢占对方的cpu时间。

windows:

可以抢占相同甚至更高优先级的线程的cpu时间

8、Synchronized总结:

第10章GUI编程

1、GUI--GraphicalUserInterface:

2、AWT:

(抽象窗口工具集)AbstractWindowToolkit

3、Swing:

3、SWT(StandardWidgetToolkit):

4.aa:

5、Component&Container:

6、Frame:

7、Panel:

8、布局管理器:

9、FlowLayout布局管理器:

10、FlowLayout的构造方法:

TestFlowLayout.javaFlowLayout初步用法TestFlowLayout2.javaFlowLayout多个Button

11、BorderLayout布局管理器:

组件只能被添加到指定的区域

 

TestGridLayout.java

如:

GridLayout(3,4)

布局管理器总结:

11、事件监听:

(1)TextField类:

publicvoidsetText(Stringt)publicStringgetText()publicvoidsetEditable(booleanb)publicbooleanisEditable()publicvoidsetBackground(Colorc)publicvoidselect(intselectionStart,intselectionEnd)publicvoidselectAll()publicvoidaddActionListener(ActionListenerl)添加动作监听器。

(2)TextField事件监听:

publicvoidsetText(Stringt)publicStringgetText()publicvoidsetEditable(booleanb)publicbooleanisEditable()publicvoidsetBackground(Colorc)publicvoidselect(intselectionStart,intselectionEnd)publicvoidselectAll()publicvoidaddActionListener(ActionListenerl)添加动作监听器。

12、内部类:

内部类举例(1-1)

13、内部类总结:

好处:

(1)可以方便的访问包装类成员

(2)可以更清楚的组织逻辑,防止不应该被其它类

访问的类进行访问

何时使用:

该类不允许或者不需要其它类进行访问时候

14、Graphics类:

例:

TestPaint.java

15、鼠标事件适配器:

packagejava.awt.event;

publicabstractclassMouseAdapterimplementsMouseListener{

publicvoidmouseClicked(MouseEvente){}

publicvoidmousePressed(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

}

16、Window事件:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1