《Java语言程序设计》期末复习提纲.docx
- 文档编号:2283396
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:38
- 大小:69.30KB
《Java语言程序设计》期末复习提纲.docx
《《Java语言程序设计》期末复习提纲.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计》期末复习提纲.docx(38页珍藏版)》请在冰点文库上搜索。
《Java语言程序设计》期末复习提纲
《Java语言程序设计》期末复习提纲
2013-05
第1章绪论
1、Java语言的特点(PPT和课本)
JAVA是一种“简单、面向对象、分布式、解释型、健壮、安全、体系结构中立、可移植、高性能和动态”的编程语言
1.Java的简单性是以增加系统的复杂性为代价的。
2.Java是面向对象的。
面向对象的编程语言支持三个概念:
封装、多态性和继承
3.分布式:
•数据分布支持:
•通过Java的URL类可以访问网上的各类信息资源,访问方式完全类似于本地文件系统;
•操作分布支持:
•通过在web页面中的小应用程序(Applet)将计算从服务器分布至客户机,避免网络拥挤,提高系统效率。
4.Java程序是半编译、半解释的。
Java源程序经编译器编译后产生字节码(bytecode),Java解释器解释执行字节码。
优点:
兼具编译执行的效率优势和解释执行的灵活性;
提高了应用程序的可移植性:
源程序、中间代码
5.平台无关性/可移植性
“一次编程,到处运行”---WORA(WriteOnce,RunAnywhere)
程序的可移植性:
指程序不经过修改而在不同的硬件或软件平台上运行的特性。
可移植性在一定程度上决定了程序的可应用性。
可移植性包括二个层次:
源代码级和二进制级的可移植性。
C、C++仅有一定的源代码级的可移植性。
Java可移植性源于两方面:
Java的半编译、半解释的特征
Java采用标准的独立于硬件平台的数据类型
6.安全性:
•在语言和运行环境中引入了多级安全措施:
•Java的内存分配和引用模型对于程序员透明,完全由底层的运行系统控制;
•内存布局与C、C++不同,不是由编译器决定,而是运行系统根据所在的硬件平台的特性决定;
•取消了C、C++的指针,JAVA编译器通过符号指针来引用内存,由JAVA运行系统在运行时将符号指针具体解释为实际的内存地址。
•字节码验证
•运行系统引入字节码验证器,其中包含简单的规则验证程序,以确保遵循下列规则:
•不存在伪造的指针;
•未违反访问权限;
•严格遵循对象访问规范来访问对象;
•合适的参数调用方法;
•没有栈溢出
7.多线程:
•JAVA在语言级嵌入对并发的支持功能,具体机制就是多线程。
•线程是比进程更小、效率更高的并发执行单位,不拥有单独的内存空间。
•JAVA线程执行中被映射到实际的操作系统线程。
8.健壮:
•Java致力于检查程序在编译和运行时的错误。
•运行错误的处理机制
•内存的垃圾收集机制
•不使用指针操作
2、JDK环境配置(PPT和课本):
path=%path%;C:
\jdk1.6.0_27\bin
classpath=.;C:
\jdk1.6.0_27\lib
•JAVA_HOME:
•该环境变量的值就是Java所在的目录,一些Java版的软件和一些Java的工具需要用到该变量,设置PATH和CLASSPATH的时候,也可以使用该变量以方便设置。
•PATH:
•指定一个路径列表,用于搜索可执行文件的。
执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找PATH中的每一个路径,直至找到。
或者找完PATH中的路径也不能找到,则报错。
Java的编译命令(javac),执行命令(java)和一些工具命令(javadoc,jdb等)都在其安装路径下的bin目录中。
因此我们应该将该路径添加到PATH变量中。
•CLASSPATH:
•也指定一个路径列表,是用于搜索Java编译或者运行时需要用到的类。
在CLASSPATH列表中除了可以包含路径外,还可以包含.jar文件。
Java查找类时会把这个.jar文件当作一个目录来进行查找。
通常,我们需要把JDK安装路径下的jre/lib/rt.jar(Linux:
jre/lib/rt.jar)包含在CLASSPATH中。
•PATH和CLASSPATH都指定路径列表,列表中的各项(即各个路径)之间使用分隔符分隔。
在Windows下,分隔符是分号(;),而在Linux下,分隔符是冒号(:
)。
3.Java程序的基本开发步骤:
编辑、编译和运行
4.Java程序的类型
•application——它们类似于传统的C和C++程序
•applets——这些程序运行在网页上并且需要一个驱动的浏览器。
如:
Sun的HotJava,Microsoft的IE,Firefox等
•Servlets——Servlets没有图形化的用户界面。
它们普遍用于扩展Web服务器的功能。
•package——包是能被应用程序和applets共享的类的集合。
5.掌握开发Java程序的工作流程
•1、编辑源程序:
*.Java;工具:
文本编辑器,推荐:
UltraEdit或EditPlus等;
•2、编辑Java源程序:
javacExmp.java
•3、运行Java程序:
javaExmp
•4、或采用集成开发环境(IDE),如Eclipse、Jbuilder、BlueJ、JCreator等
6.Java源程序结构特点、文件名命名要求
•Java大小写敏感
•如果源文件中有多个类,那么只能有一个类是public类
•如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同;若没有public类,那么文件名只需要和某个类的名字相同即可
7.理解Java程序的工作原理(图1.31)
第2章结构化程序设计
(一)标识符、关键字和数据类型
1.Java词法(见PPT):
UNICODE字符集、空格与分号、注释、标识符、关键字等;
Java是一种自由格式的语言,可以用任意个空格、制表符、换行符隔开每个词。
分号作为语句的结束符,每个语句必须以分号作为结束符。
标示符:
标识符可以用来标识变量名、类名、类中的方法名和文件名等.
2.Java标识符:
命名规则、书写约定
•语法规则:
•标识符组成:
(1)字母,
(2)数字,(3)下划线“_”和(4)美元符号“$”;
•首字符必须是
(1)字母,
(2)下划线“_”和(3)美元符号“$”;
•所有标识符是区分大小写的;
•除去关键字、false、true和null;
•标识符书写约定:
•类名,接口名:
首字母应该大写。
classThisIsAClassName
interfaceAccount
•字段、方法以及对象:
首字母应小写。
thisIsMethodOrFieldName()
•对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。
例如:
•常量:
全部用大写字母表示。
如:
GREENHEAD_COUNT
•Java包(Package)属于一种特殊情况:
它们全都是小写字母,即便中间的单词亦是如此。
如:
packagejava.awt.event
使用有如下规定
•1/标识符可以由字母、数字、下划线(_)或美元符号($)组成。
•2/标识符必须以字母、下划线或美元美元开头。
•3/Java语言是区别大小写语言,Myfirst与myfiirst分别代表不同的标识符。
•4/标识符不能与关键字(保留字)同名。
•5/使用标识符应该在一定的程度上反应出它所表示的变量、常量、类或对象和含义。
•6/没有长度限制
3.基本数据类型的定义与使用(PPT或课本);
4、基本数据类型转换(PPT)
(1)自动类型转换(注意其兼容性规则)
低------------------------------------------------------>高
byte,short,char->int->long->float->double
•对于加宽转换,数字类型,包括整数(integer)和浮点(floating-point)类型都是彼此兼容的;
•但是,数字类型和字符类型(char)或布尔类型(boolean)是不兼容的。
•字符类型(char)和布尔类型(boolean)也是互相不兼容的。
(2)强制类型转换
•所谓的强制类型转换是一种显式的类型变换方式,其通用格式如下:
•(target-type)value
•其中,目标类型(target-type)指定了要将指定值所转换成的类型。
理解表达式中的类型的自动提升
•除了赋值方式,类型变换还可以在表达式中进行。
在表达式中,对中间值的精确要求有时超过任何一个操作数的范围;
•如果在JAVA应用程序表达式中出现数据类型不一致的情形,那么JAVA运行时系统首先自动将低优先级类型的数据转换成高优先级类型的数据,然后才进行表达式值的计算。
•例如,考察下面的表达式。
•bytea=40;byteb=50;bytec=100;
•intd=a*b/c;
•中间项结果a*b很容易超过它的任何一个byte型操作数的范围。
为处理这种问题,当分析表达式时,Java自动提升各个byte型或short型的操作数到int型。
•这意味着子表达式a*b使用整数而不是字节型来执行。
这样,尽管变量a和b都被指定为byte型,50*40中间表达式的结果2000是合法的。
(二)运算符、表达式和语句
1.Java常用运算符(P29)、理解优先级与结合性(PPT),表达式
算术运算符(+,-,*,/,%,++,--):
理解++,--的含义
•++a是在变量参与参与运算之前自增1,然后用新值参与运算;而a++则是先用原来的值参与运算,然后再将自己加1。
--a与a—与上述相类似。
•++i(在使用i前,先使i的值加1),--i
•i++(在使用i后,再使i的值加1),i--
关系运算符(>,<,>=,<=,==,!
=)
•<、>、<=和>=只能用来比较两个数值类型数据(numbers含characters)的大小
•不能用于Strings、booleans、arrays或其他类型
布尔逻辑运算符(!
,&&,||,|,&):
理解短路运算
•短路规则(&&和||)
•如果从第一个操作数可以推断出表达式结果,就不再计算第二个操作数
•例如:
if((x==2)&&(y!
=2))
•System.out.println("两个条件都为true.");
位运算符(>>,<<,>>>,&,|,^,~):
理解位运算符的实际运算过程
按位异或运算(^)
参与运算的两个值,如果两个相应位的某一个是1,另一个是0,那么按位异或(^)在该位的结果为1。
也就是说如果两个相应位相同,输出位为0,否则为1。
即:
0^0=0,0^1=1,1^0=1,1^1=0
左移位运算符(<<)
<<:
用来将一个数的各二进位全部左移若干位。
高位左移后溢出,舍弃不起作用,右补0。
例如:
a=00001111,则a<<2=00111100。
在不产生溢出的情况下,左移一位相当于乘2
128<<1returns128*21=256
16<<2returns16*22=64
右移位运算符(>>与>>>)
运算符>>执行一个右移位(带符号),左边按符号位补0或1
a=00110111,则a>>2=00001101
b=11010011,则b>>2=11110100
右移一位相当于除2取商
例如:
128>>1returns128/21=64
256>>4returns256/24=16
-256>>4returns-256/24=-16
•>>>:
同样是执行一个右移位,只是它执行的是不带符号的移位。
也就是说对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。
如a=00110111,则a>>>2=00001101
b=11010011,则b>>>2=00110100
赋值运算符(=,及其扩展赋值运算符如+=)
•赋值类运算符包括:
=、+=、-=、*=、/=、&=、|=、%=、<<=、>>=和>>>=
•op1=op1二元运算符op2;
•等价于op1二元运算符=op2;
•例如:
a=a+b;等价于a+=b;
条件运算符(?
:
)
三目条件运算符(?
:
)
在Java语言中,三目条件运算符(?
:
)与C语言中的使用规则是完全一致的,使用的形式是:
x?
y:
z;
上面的三目条件运算的规则是:
先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。
下面的例子实现了从两个数中找出较大的数的功能。
inta=3,b=4;
intmax=a>b?
a:
b;
max的值为4。
其它(包括分量运算符·,下标运算符[],实例运算符instanceof,内存分配运算符new,强制类型转换运算符(类型),方法调用运算符()等)
2.语句格式与执行逻辑(如Switch、if、while等)
(1)分支语句:
if-else,switch-case
(2)循环语句:
for,while,do-while
(3)例外处理语句:
try-catch-finally,throw
(4)其他:
break,continue,label:
return
能够用
(1)
(2)写出程序块、理解break;continue,return的含义(见PPT的例子)。
publicclassGradeLevel{
publicstaticvoidmain(Stringargs[]){
System.out.println("\n****firstsituation****");
chargrade='C';//normaluse
switch(grade){
case'A':
System.out.println(grade+"is85~100");break;
case'B':
System.out.println(grade+"is70~84");break;
case'C':
System.out.println(grade+"is60~69");break;
case'D':
System.out.println(grade+"is<60");break;
default:
System.out.println("inputerror");
}}
(三)熟练掌握本章练习与作业的内容
第3章面向对象程序设计(类、对象和接口)[重点全面理解]
1.理解面向对象的类的三个基本特性:
封装性、继承性和多态性(课本);
对象:
一个对象就是变量和相关方法的封装,其中变量表明对象的状态,方法表明对象的行为。
软件对象既可以模拟现实世界的对象,也可以表示抽象的概念
类:
类是一类对象的抽象或原型,它定义了该类对象的共同的状态和方法
类和对象的区别:
类:
是一类对象的原型,是对该类对象的抽象。
对象:
是某个类的一个实例,是客观存在并能够使用的。
封装性:
能把对别的对象来说并不重要的对象的实现细节隐蔽起来,在使用一个对象时,只需知道怎样引用它的方法而无须知道它的具体实现。
封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。
封装的优点:
模块化—一个对象的源代码的编写和维护独立于其它对象的源代码。
而且,对象在系统中很容易使用。
信息隐蔽—每个对象都有一个公共接口使得其它对象可以与其通讯。
但对象能维护自己的私有信息和方法并能在任何时候改变它们而不会影响使用它的其它对象。
继承性:
利用现有的类(superclass)定义新的类(subclass),子类可以继承父类的属性和方法并可以增加新的属性和方法或重载父类的方法。
继承的优点:
子类提供了基于父类公共部分的更具体的行为。
利用继承子类可以重用父类多次;
可以定义一个称为抽象类的父类来定义一般行为。
多态性:
在同一个类中至少有两个方法用同一个名字,但有不同的参数。
2.掌握类、域和方法的定义(课本和PPT)
类的定义格式如下:
[类修饰词]class类名[extends父类名][implements接口名称列表]
{
类体:
构造方法(constructor)
成员变量(membervariable)的声明
成员变量也称为域
成员方法(Method)的实现
}
2.1构造方法的概念与定义方法;
构造函数重载(如果有this()语句则必须是其中的第一句)
变量和方法称为类的成员(成员变量和成员方法),而构造方法不是类的成员
每个类中至少有一个构造方法
定义类时如未定义构造方法,运行时系统会为该类自动定义缺省的构造方法
构造方法通常用来初始化实例对象,例如:
初始化成员域或设置工作环境
定义:
类中用来初始化新建的对象的方法,称为构造方法。
特点:
无返回类型,
方法名与类名相同
说明:
构造方法可被重载(overloaded),但必须具有不同的参数列表。
例如:
publicclassThing{
privateintx;
publicThing(){
x=47;
}
publicThing(intnew_x){
x=new_x;
}
}
2.2成员变量的声明
例子:
publicclassSliderDemo{
publicstaticfinalintFPS_INIT=15;
privateintframeNumber=0;
protectedintdelay;
booleanfrozen=false
Timertimer;
privateStringname="FredFlintstone";
}
(1)注意其修饰符的含义:
访问控制、static、final
(2)注意的问题(PPT的2. 成员变量的声明
)
成员变量在类体中声明,但在构造方法和方法之外。
(3)理解变量的作用域和生存期(见课本和PPT的例子)
(1)方法定义的作用域以它的左大括号{开始。
但是,如果该方法有参数,那么它们也被包括在该方法的作用域中。
(2)作为一个通用规则,在一个作用域中定义的变量对于该作用域外的程序是不可见(即访问)的。
因此,当你在一个作用域中定义一个变量时,你就将该变量局部化并且保护它不被非授权访问和/或修改。
实际上,作用域规则为封装提供了基础。
(3)作用域可以进行嵌套。
例如,每当你创建一个程序块,就创建了一个新的嵌套的作用域。
这样,外面的作用域包含内部的作用域。
这意味着外部作用域定义的对象对于内部作用域中的程序是可见的。
但反过来就不是,内部作用域定义的对象对于外部是不可见的。
另一个需要注意的地方是:
变量在其作用域内被创建,离开其作用域时被撤消。
这意味着一个变量一旦离开它的作用域,将不再保存它的值了。
另外还有一点,尽管程序块能被嵌套,但不能将内部作用域声明的变量与其外部作用域声明的变量重名。
在这一点上,Java不同于C和C++。
2.3成员方法的声明
[方法修饰词]返回类型方法名(方法的参数列表)
{
方法体
}
(1)注意其修饰符的含义:
访问控制、static、abstract、final
(2)理解参数传递的两种类型:
简单数据类型(值传送);引用数据类型(数组类型、类或接口),见PPT的例子
参数的类型可以是:
简单数据类型:
值传送。
方法接收参数的值,但并不能改变这些参数的值
引用数据类型(数组类型、类或接口):
地址传递。
传递给方法的是数据在内存中的地址,
参数的命名:
参数名字可以与类的成员变量相同,但参数名会隐藏成员。
变量为了区别参数与类的成员变量,我们必须使用this
classCircle{
intx,y,radius;
publicCircle(intx,inty,intradius){
this.x=x;this.y=y;this.radius=radius;
}
}
3.对象的声明、创建(实例化)与使用(new操作符,Java垃圾收集机制:
PPT和课本例子p64~65中System.gc()和finialize()方法)
创建一个对象包括三部分:
声明部分typename,实例化部分new类的构造方法
,初始化部分。
Rectanglerect=newRectangle();
垃圾回收器(garbagecollection)
垃圾回收器定期扫描内存,对于被应用的对象加上标记,按可能的路径扫描结束后清除未加标记的对象。
当系统的内存用尽或程序中调用System.gc()要求进行垃圾收集时,垃圾收集线程与系统同步运行。
否则垃圾收集器在系统空闲时异步地执行。
被回收的对象是:
不再被任何引用变量引用的对象
引用变量自动放弃
人为地将引用变量置为null
finialize()方法
在一个对象被垃圾回收器回收之前,java解释器会自动调用对象的finalize()方法。
通常在该方法内包括了释放系统资源的代码段。
finalize()方法在类java.lang.Object中实现
如:
protectedvoidfinalize()throwsthrowable{
……//cleanupcodeforthisclass
super.finalize();//清除对象使用的所有资源,包括由于继//承关系而获得的资源
4.static关键字(类成员与实例成员)
(1)理解类变量与实例变量的区别与使用方法
实例变量对对象而言是独立的;类变量对对象而言是公用的。
•二者区别:
•运行时系统在首次遇到类变量时就为类变量存储空间;而当创建类的实例对象时才为实例变量分配存储空间。
•不管有多少类的实例,类变量只有一份拷贝,即所有实例共享相同的类变量;而每个实例对象都有自己的实例变量。
(P86-87)
•实例变量只能通过对象来访问,而类变量既可以通过类名来访问,也可以通过实例对象来访问。
(P86-87)
(2)理解类方法与实例方法的区别与使用方法
实例方法只能由对象调用,并且可以操作类变量与实例变量;而类方法既可以由类调用又可以由对象调用,并且类方法只能对类变量进行操作。
5.this关键字的含义与使用方法
this是一个类的当前实例(对象)的引用。
只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言程序设计 Java 语言程序设计 期末 复习 提纲