java自学考试复习资料.docx
《java自学考试复习资料.docx》由会员分享,可在线阅读,更多相关《java自学考试复习资料.docx(17页珍藏版)》请在冰豆网上搜索。
java自学考试复习资料
《Java语言程序设计》
第1章Java语言基础
Java语言的特点。
Java语言主要有以下特点:
1)强类型:
强制约束程序员必须遵守更多的编程规定,编译器能检测程序中尽可能多的错误。
2)编译和解释:
用Java编写的源程序在计算机上运行必须经过编译和解释执行两个阶段。
编译程序先江Java源程序翻译成与机器无关的字节码(bytecode),不是通常的编译程序将源程序翻译成特定计算机的机器代码。
运行时,由Java虚拟机(JVM)中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。
3)自动无用内存回收功能:
垃圾收集器(garbagecollector)可以自动回收程序不再使用的内存,避免程序遗漏或重复释放内存。
4)面向对象
5)与平台无关:
与平台无关是对程序可移植性最直接最有效的支持,“一次编程,到处运行”。
可移植性源于两方面:
1.Java的编译和解释的特征(Java虚拟机);2.Java采用基于国际标准的数据类型,在任何平台上,同一种数据类型是一致的。
6)安全性:
取消指针,避免因指针使用不当,访问不该访问的内存空间;提供数组下标检测机制,禁止程序越界访问内存;编译执行过程中进行比较严格的检查:
在解释执行前,对字节码文件作检查,防止被恶意改动的字节码文件被解释执行而破坏系统;浏览器限制下载的小应用程序不允许访问本地文件,避免其破坏本地文件。
7)分布式计算
8)多线程:
Java的运行环境采用多线程实现。
Java语言提供语言级多线程支持,用Java语言能直接编写多线程程序。
两种类型的Java程序。
Java程序可分为应用程序(Application)和小应用程序(Applet)两类。
这两种程序的主要区别:
1)小应用程序需要嵌入在HTML网页中,当网页被浏览时,在浏览器中运行;且其运行受到严格的安全限制。
2)应用程序则独立运行,不嵌入网页,也没有那些限制。
3)另外,这两类程序在代码编写上也有差异:
一个小应用程序必须定义为类的子类,而不必定义main()方法;应用程序一般不必为类的子类,而必须在一个类中定义main()方法。
注释:
1)行注释*/
2)文档注释/**…*/
Java程序的开发过程
通常在JDK目录下有bin、demo、lib、jre等子目录,其中bin目录保存了javac(编译器)、java(解释器)、jdb(调试器)、appletviewer(javaAppelt解释器)等命令文件;
Java的字符集和标识符。
Java语言使用Unicode字符集,字符采用双字节的表示方式,共有65535个字符,最前面的128个字符与标准的ASCII字符一致,包括:
1)数字字符10个(0~9)
2)英文大小写字母各26个(A~Z,a~z)
3)下划线(_)、美元符号($)
4)文字字符(汉字,日文片假名、平假名,朝鲜文字等)
5)其他用于构成特殊符号的字符集
标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:
1)标识符由Java字母和Java数字组成;
2)首字符必须是Java字母;
3)除去关键字、false、true和null;
4)所有标识符是区分大小写的。
关键字是Java语言保留的一些英文单词,具有特殊的含义。
例如:
public、static和class,具有特殊用途,不能作为标识符使用。
基本数据类型。
布尔型(boolean)1个字节(true或false)
字符型(char)16位
字节型(byte)8位
短整型(short)16位
整数型(int)32位
长整型(long)64位
单精度浮点型(float)32位
双精度浮点型(double)64位
Java直接量是直接显式地表示基本数据类型数据、字符串(String)值和空引用值(null)的表达式,而且在该表达式中不含运算。
布尔(boolean)直接量只有两个:
true和false
字符(char)直接量:
如‘a’,‘6’,‘猫’,‘\u0061’,‘\n’
整型(byte,short,int)直接量:
如-27,+0123,0x56ab
长整型(long)直接量:
如-27L,+0123L,0x56abL
浮点数(float,double)直接量:
如,,100d,,,,,,
字符串(String)直接量:
如“HelloWorld!
”
引用数据类型的直接量:
null
变量在计算机内部对应着一个存储单元,而且总是具有某种数据类型:
基本数据类型或引用数据类型。
每个变量均具有:
名字、类型、一定大小的存储单元以及值。
变量总是具有与其数据类型相对应的值。
基本数据类型:
变量的存储单元中存放的是具体的布尔值或数值;
引用数据类型:
变量的存储单元中存放的是引用值,引用值一般用来指向某个具体的对象。
如果引用值是null,则该引用值不指向任何对象。
在使用变量前,必须先定义该变量,而且一般要求先初始化。
例如:
intstudentNumber;while循环的嵌套
以上三个任意之间的嵌套
continue语句。
格式:
continue;
功能:
跳过continue之后的语句,重新判断循环控制条件,决定是否继续循环。
说明:
(1)continue语句只能用在三种循环语句的循环体中。
(2)continue语句通常和if语句联合使用,从而构成其后的部分循环体是否执行的单分支结构。
break语句。
格式:
break;
功能:
强制结束当前的循环,不再执行循环体中break后面的语句。
说明:
(1)break语句只能在三种循环语句的循环体和switch语句中使用。
(2)在循环语句中break通常和if语句联合使用,用于构成第二个退出循环的机会。
Package语句。
程序包相当于其它语言的函数库,系统提供大量的程序包,自己编写的类也可以组成程序包,但一定要用package语句声明。
格式:
package包名;
包名是一个目录名,可以有路径。
import语句。
用来引入所需要的类
格式:
import包名.类名;
例如:
import引入Date类
如果从一个包中引入多个类,可以用通配符“*”,如:
import.*;
一个java源程序中可以有多个import语句,它们必须出现在package语句之后;类的定义之前。
Java程序的基本结构。
[package包名;]
import包名.类名;
…员变量名
调用对象的方法,一般形式为:
对象名.方法名([参数表])
实例变量和类变量
被关键字static修饰的变量为类变量(静态变量),未被关键字static修饰的变量为实例变量。
例如:
classD{
floatx;applet.Applet类是所有Javaapplet的基类,所有的Javaapplet都必须继承该类。
(1)小应用程序的建立和运行
Javaapplet程序从建立到运行的步骤如下:
1)选用写字板或文本编辑器等工具建立Javaapplet源程序。
(其中必须有一个类继承类,这个类是小应用程序的主类,用关键字public修饰。
)
2)把Javaapplet的源程序编译为字节码文件。
3)编制HTML文件,通过标记将字节码文件嵌入HTML文件中。
4)在支持Java的浏览器上运行。
(2)Applet类的基本方法
publicvoidinit()
publicvoidstart()
publicvoidpaint()
publicvoidstop()
publicvoiddestroy()
publicvoidrepaint()
publicvoidupdate()
(4)小应用程序数据输入与输出
小应用程序的数据输入有多种方式:
从图形用户界面的文本框、文本区域中输入;
采用系统标准输入;
由HTML文件中的参数导入。
第2章数组和字符串
1.数组
数组是连续存储区域的命名集合,这些存储区域彼此相邻,存放着相同类型的数据元素。
一维数组
(1)声明一维数组
一维数组变量的声明格式有如下两种:
数组元素的数据类型[]数组名;
数组元素的数据类型数组名[];
(2)创建一维数组
Java数组是引用类型,可以通过new操作符来创建;在创建一个数组时必须指明数组的元素类型和它的长度。
先声明后创建
格式:
数组名=new数组元素类型[元素个数]
示例:
char[]c;ength是二维数组的子数组个数;二维数组名[下标1].length是指定子数组的元素个数。
2.字符串
字符串常量
双引号括起来的字符序列。
示例:
“student”、“你好”或“”
字符串声明和创建
Stringname1=newString();
Stringname2=newString(“HelloWorld”);
chara[]={‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’};
Stringname3=newString(a);
Stringname4=newString(a,2,4);
字符串基本操作
(1)字符串连接
Strings1=“sweet”;
Strings2=newString(“you”+“are”+s1);
(2)获取字符串长度
方法:
publicintlength()
功能:
返回此字符串的长度
(3)字符串前缀或后缀的比较
方法:
publicbooleanstartsWith(String prefix)
功能:
测试此字符串是否以指定的前缀开始
方法:
publicbooleanendsWith(String suffix)
功能:
测试此字符串是否以指定的后缀结束
(4)比较两个字符串是否相同
方法:
publicbooleanequals(Object obj)
功能:
比较两个引用变量是否引用同一个对象,例如(y),对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true(x==y具有值true)。
方法:
publicbooleanequalsIgnoreCase(String anotherString)
功能:
将此String与另一个String比较,不考虑大小写。
如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。
方法:
publicintcompareTo(String str)
功能:
按字典顺序比较两个字符串的大小。
该比较基于字符串中各个字符的Unicode值。
如果此String对象小于参数字符串,则返回一个负整数。
如果此String对象大于参数字符串,则返回一个正整数。
如果这两个字符串相等,则返回0。
方法:
publicintcompareToIgnoreCase(String str)
功能:
按字典顺序比较两个字符串,不考虑大小写。
(5)字符串检索
String的实例方法indexOf()可以用于在字符串中查找一个字符或子串的索引位置。
indexOf()方法在一个String里从左到右查找一个字符或子串,它有几种版本:
publicintindexOf(Stringstring);
publicintindexOf(Stringstring,intstartingIndex);
(6)取字符串的子串
方法substring()可以用来从一个String里检索一个字符子串。
publicStringsubstring(intstartIndex)
例如:
Stringstr=“HelloWorld”;
(5);图形界面设计基础
AWT和Swing
AWT:
AbstractWindowingToolkit,抽象窗口工具包
Swing:
与AWT相比——功能更加强大、完善,平台相关性较小
组件和容器组件(Component)
组件是Java图形用户界面的最基本组成部分,是一个可以以图形化的方式显示在屏幕上、并能与用户进行交互的对象,组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。
容器(Container)
容器是可以容纳其他组件的组件,是图形界面的复合元素。
Container类有add()方法,可以向容器添加组件。
类的成员方法:
publicComponentadd(componentcomp)
标签、按钮和按钮事件
标签()是用于短文本字符串或图像或二者的显示区。
标签不对输入事件作出反应。
标签(类)的构造方法:
publicJLabel()
publicJLabel(Stringtext)
publicJLabel(Stringtext,intalign)
面板
JPanel(见课本94-95页)面板是一种常用容器,常被用作中间容器。
面板(类)的构造方法:
publicJPanel()
publicJPanel(LayoutManagerlayout)布局设计(课本96-102页,综合应用)
FlowLayout布局
流布局管理器()是、和的默认布局方式。
特点:
在容器中,从左到右依次排列组件,当组件排满一行时,则从下一行开始继续排列组件。
可以设置每行组件的对齐方式为:
左对齐、中间(默认对齐方式)和右对齐。
类的构造方法:
publicFlowLayout()
publicFlowLayout(intalign)
publicFlowLayout(intalign,inthgap,intvgap)
文本框和文本区
文本框:
文本框()可用来编辑单行文本。
文本框(类)的构造方法:
publicJTextField()
publicJTextField(Stringtext)
publicJTextField(intcolumns)
publicJTextField(Stringtext,intcolumns)
择框和单选按钮
选择框(JCheckBox)和单选按钮(JRadioButton)均为触击式选择组件,单击这些组件时,都能触发特定的事件,使得复选框和单选按钮的选择状态发生变化。
选择状态有两种,一种是选中(on),一种是未选中(off)。
当需要让用户在一组选择项目中做出选择时,可以使用选择框和单选钮。
选择框(
选择框也称为复选框,选择框(类)的常用构造方法:
publicJCheckBox()
publicJCheckBox(Stringtext)
publicJCheckBox(Stringtext,booleanselected)表和组合框列表
JList构造方法:
JList(),JList(String[]list)
其他常用方法:
课本114-116页
组合框
JComboBox---文本框和列表的组合
常用构造方法:
JComboBox(),
JComboBox(JComboBoxModelaModel),
JComboBox(Object[]items)
选择框菜单项
JCheckBoxMenuItem
4.对话框
JDialog类
JOptionPane类
6.鼠标事件
MouseListener接口
MouseMotionListener接口
第3章图形、图像与多媒体
主要内容:
绘图基础、绘图、图像处理基础、多媒体基础
绘图基础
Graphics类的基本功能:
建立字体、设定显示颜色、显示图像和文本、绘制和填充各种几何图形。
getGraphics()
Paint()paintComponent()
字型和颜色
drawString(Stringstr,intx,inty)
drawChars(chardata[],intoffset,intlength,intx,inty)
drawBytes(bytedata[],intoffset,intlength,intx,inty)
字型的三个要素:
字体、风格、字号
类Font设置字型
构造方法有:
Font(StringfontName,intstyle,intsize)
常用方法如:
getStyle()getName()等
绘图模式:
如何确定重叠部分,正常模式、异或模式
setPaintMode()、setXORMode()
绘图
Graphics类的绘图方法
画线段drawLine()
画矩形drawRect()
画图
擦除矩形块clearRect()
复制图形copyArea()
Graphics2D类的绘图方法
图像处理基础
图像载入和输出
Image类:
getImage(URLurl)
图像缓冲技术
加载图像
•小应用程序通过URL得到网页上的图像
•类中的方法
–ImagegetImage(URLurl)
–ImagegetImage(URLurl,Stringname)
–返回图像对象
显示图像
•类中的成员方法
–不带缩放的图像显示:
–booleandrawImage(Imageimg,intx,inty,Colorbgcolor,ImageObserverobserver)
–booleandrawImage(Imageimg,intx,inty,ImageObserverobserver)
–带缩放的图像显示:
–booleandrawImage(Imageimg,intx,inty,intwidth,intheight,Colorbgcolor,ImageObserverobserver)
–booleandrawImage(Imageimg,intx,inty,intwidth,intheight,ImageObserverobserver)
图像缓冲技术
•BufferedImage类
通过定时器控制动画速度
–构造方法
publicTimer(intdelay,ActionListenerlistener)
–成员方法
publicvoidsetInitialDelay(intinitialDelay)
publicvoidsetCoalesce(booleanflag)
publicvoidstart()
publicvoidstop()
动画制作
•相关方法
publicvoidactionPerformed(ActionEvente)
repaint();
publicvoidpaint(Graphicsg)
提高动画质量
•帧缓存技术
加载与播放声音资源
•支持多种声音资源
–SunAudio文件(.au后缀),
–WindowsWave文件(.wav后缀),
类中的相关方法
•AudioClipgetAudioClip(URL)和AudioClipgetAudioClip(URL,String)
–返回声音资源
•voidplay(URL)和
voidplay(URL,String)
–播放AudioClip
接口中相关方法
•voidloop()
–重复播放audioclip
•voidplay()
–播放audioclip(不循环)
•voidstop()
–停止播放
第4章多线程
1.线程的基本概念
2.在Java程序中,多任务是通过多线程实现的。
•多任务是一种在单个程序里同时执行多项任务的技术。
在Java中,通过给每个任务一个独立的执行线程,从而形成了多线程的并行程序。
•一个CPU一次只能执行一条机器指令,通过在线程之间快速的切换,就可以并行的运行多个线程。
•通过调度技术将CPU时间在各个线程之间分享,就可以实现多线程的程序。
在不同的操作系统中,处理线程调度有不同的解决方案。
•常用的一种调度技术为时间分片,在某种调度算法的控制下,每个线程得到一小片CPU时间。
–轮循调度:
每个线程分到一个相等的时间片,并且遵循先来先服务的原则。
–优先级调度:
更高优先级的线程可以在低优先级线程运行之前先运行。
(1)线程的生命周期
•新建->就绪->运行->阻塞->死亡
•Thread类
•Start()
•Run()
•Sleepwait
•ResumenotifynotifyAll
(2)线程调度与优先级(课本160页)
•每个Java程序都有一个默认的主线程,就是通过JVM启动的第一个线程。
–对于应用程序,主线程执行main()方法。
–对于Applet,主线程是指浏览器加载并执行小应用程序的那一个线程。
•守护线程(Daemon)是一种监视其他线程工作的服务线程,具有最低的优先级。
2.Thread类和Runnable接口
•在程序中创建线程的方法通常有两种:
(1)创建Thread的一个子类,并重写run()方法,创建此子类的对象作为线程对象。
(2)定义实现Runable接口的类(即在类中实现run()方法),创建此类的对象并将其作为实参传给Thread类的构造方法Thread(Runnabletarget),从而创建线程对象。
(1)Thread类常用成员方法:
publicfinalStringgetName()线程互斥和同步
线程的行为是异步的,无法预测一个线程什么时候可能被中断或让出CPU给其他线程。
当涉及协调多个线程协作的应用程序中,很重要的一点是,设计应当具有防范因异步而导致问题的能力。
第5章输入和输出流
File对象
常用构造方法:
(1)File(Strings)
(2)File(Stringdirectory,Strings)
流对象:
InputStream和OutputStream、FileInputStream和FileOutputStream、FileReader和FileWriter类
建立流对象:
FileInputStream(Stringname)
FileInputSteam(Filefilename)
创建输入流的一般代码如下:
try{
FileInputStreamins=newFileInputStream(“”);
}catch(FileNotFoundException