java语言考点介绍_第1页
java语言考点介绍_第2页
java语言考点介绍_第3页
java语言考点介绍_第4页
java语言考点介绍_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章语言概论

考点一Java语言简介

1、Java语言的由来

1991年,Sun公司开发了一个Oak(-一种橡树名字)软件,它是Java的前身,1995年Oak更

名为Java。

2、Java语言的特点及优势

(1)简单易学

(2)利用面向对象技术

(3)分布式计算

(4)健壮性(也称鲁棒性)

(5)安全性

(6)跨平台(即体系结构中立)

(7)可移植性

(8)解释执行

(9)高性能

(10)多线程

(11)动态性

(12)Applet的特点

3、Java语言实现的机制

(l)Java虚拟机

Java程序的下载和执行步骤如下:

①程序经编译器得到字节代码;

②浏览器与服务器连接,要求下载字节码文件:

③服务器将字节码文件传给客户机;

④客户机上的解释器执行字节代码文件;

⑤在浏览器上显示并交互。

虚拟机(VM)的执行过程有3个特点:

①多线程:

②动态连接:

③异常处理。

(2)垃圾回收机制

(3)代码安全检测

考点二Java的体系结构

前面已说到Java以JVM为基础,实际上,许多JVM也是由软件实现的。Java的体系结构

如下所示。

1、JDK目录结构

bin目录下有编译器、解释器和许多工具(如服务器工具、IDL、package工具和jdb等

demo目录下有各种演示例子。

include目录下是Win32子目录,都是本地方法文件。

jre目录是Java程序运行环境的代码库、属性设置和资源文件,默认安装目录,安全管理。

lib目录下都是库文件。

src.zip是源码压缩文件。

2、Java的API结构

Java语言以类为程序的基本单位,类(Class)是具有某些共同特性实体的集合,是一种抽象的

概念,它实质是一种对象类型的定义,即对具有相同行为对象的一种抽象,说明该类型对象

的性质。在Java语言中,类是具有某种功能的基本模块的描述,它所提供的标准类库,为

编程所需的底层模块提供了常用的方法和接口,并将它们分类封装成包,每个包又包括子凶,

形成树结构的类层次。类库主要包括核心java、javax和org扩展包。

3、Java程序结构

Java程序包括源代码(.java文件)、由编译器生成的类(.class文件)、由归档工具jar生成的.jar

文件、对象状态序列化.ser文件。

(l)package语句,0或1个,指定源文件存入所指定的包中,该语句必须在文件之首,如没

有此语句,源文件存入当前目录下。

(2)import语句,0或多个,必须在所有类定义之前引入标准类。

(3)publicclassDefinition,0或1个,指定应用程序类名,也是源文件名。

(4)classDdfinition,0或多个,类定义。

(5)interfaceDefinition,0或多个,接口定义。

提示:Java是区分大小写的。源文件名与程序类名必须相同,其扩展名为.java,源文件中最

多有一个public类,其他类的个数不限。

4、Java有2类应用程序,JavaApplication和JavaApplet。前者是独立的应用程序,而后者

嵌入HTML在浏览器中执行。

JavaApplication应用程序的编写和执行分3步进行:

(1)编写源代码。

(2)编译源代码。

(3)解释执行,利用j2sdkl.4.2的解释器javaexe执行。

JavaApplet应用程序的编写和执行共分4步进行:

⑴编写源代码,这步与JavaApplication应用程序相同,编辑••个源文件存入指定文件夹中。

注意,该程序不含main方法。

(2)编写HTML文件调用该小程序,以.html为护展名存入相同文件夹。

(3)编译过程,与javaApplication应用程序相同,编译应用程序的java部分。

(4)解释执行,同样在DOS方式下,输入命令:appletviewerfilename.html(这里的filename.

不要求与java文件同名)。如无错误,显示结果,如有出错报告,排错后,重复上面解释执

行。

第2章简单数据类型

考点一概述

在Java语言中,所有的变量、常量、对象和类都是用标识符命名的,标识符的命名规则为:

⑴标识符是以字母、下划线(_)、美元符叫()作为首字符的字符串序列。在首字符后面可以跟

字母、下划线(_)、美元符叫()和。

(2)标识符是区分大小写的。

(3)标识符的字符数目没有限制,但为便于阅读和记忆,不宜太长。

Java语言的数据类型如下图所示。

数据类型简单数据类型数值类型

字符类型char)整数类型(byte,int,long,short)

浮点数类型(float,double)

布尔类型(boolean)

复合数据类型类(class)

接口(interface)

数组

Java语言的数据类型

考点二简单数据类型

1、整型数据

整型数据分整型常量和整型变量。

整型常量分3种书写格式:

(1)十进制整数。

(2)八进制整。

(3)十六进制整数。

与整型常量相同,java语言提供了byte、short、int和long4种类型的整型变量。

2、浮点型数据

浮点型数据属于实型数据,分float和double两种类型,也有实型常量和实型变量之分。浮

点型数据由数字和小数组成,必须有小数位数bit越多,表示数越精确。

3、布尔型数据

布尔型数据只有两个值:true(真)和false(假),它不对应任何数值,因此,它不能与数字进行

相互转换,布尔型数据一般用于逻辑判别,在流控制中常用,它在计算机内存占1位bit,

默认值(局部变量除外)为false,

4、字符型数据

(1)字符常量

字符常量是用单号括起来的一个字符,如《、'@1用双撇号括起来的是字符串,

如"s"、"Shanghua"。一般说,凡是Unicode的字符都可以括起来作为字符常量,但对有一些

字符必须用转义字符来表示,如单撇号本身、换行符等。转义字符以反斜杠(开头,如表

示单撇号(')、“n”表示换行符。

(2)字符变量

字符变量以char类型表示,它在内存中占16位bit,表示范围是0〜65535,它不能当做整

数使用•char类型的值可转换成int类型,但反过来,将int转换成char类型必须用强制执

行。

考点三各类数据之间的转换

1、优先关系

自动类型转换是由按优先关系从低级数据转换成高级数据,规定的优先次序是:

byte,short,charintlongfloatdouble

2、类型的自动转换规则

不同类型数据之间的转换规则归纳如下:

操作数1的数据类型操作数2的数据类型转换后的数据类型

byte或intintint

byte或short或intlonglong

byte或short或int或longfloatfloat

byte或short或int或long或floatdoubledouble

charintint

3、类型的强制转换

将较长的数据类型转换成较短类型,只能用强制类型转换,通常都用赋值语句来实现,在要

求强制的变量名前面用()括上所要强制转换的类型符。

考点四Java类库中对简单类型数据的类包装

在Java语言中,简单数据类型是类包装在类库中,它们在基本类库的层次如下所示:

classjava.lang.Object

classjava.lang.Boolean(implements)java.io.Serializable)

classjava.lang.Character(implements.lang.Comparable.java.io.Serializable)

classjava.lang.Number(implementsjavajo.Serializable)

classjava.lang.Byte(implementsjava.lang.Comparable)

classjava.lang.Double(implementsjava.lang.Comparable)

classjava.lang.Float(implementsjava.lang.Comparable)

classjava.lang.Integer(implementsjava.Iang.Comparable)

classjava.lang.Long(implementsjava.lang.Comparable)

classjava.lang.Short(implementsjava.lang.Comparable)

第3章运算符和表达式

【考点一】概述

1、运算符

对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符,参与运

算的数据称为操作数。

按运算符的操作数的数目划分,可分为

(1)一元运算符;

(2)二元运算符;

(3)三元运算符。

按运算符的功能划分,可以分为

(1)算术运算符;

(2)关系运算符;

(3)布尔逻辑运算符;

(4)位运算符;

(5)赋值运算符;

(6)条件运算符;

(7)其他。

2、表达式

表达式是同操作数和运算符按•定的语法形式组成的符号序列。

表达式的类型指的是表达式运算结束后的值的类型,由运算符以及参与运算的操作数的类型

决定。

【考点二】算术运算符和算术表达式

1、一元算术运算符

一元算术符涉及的操作数只有一个,由一个操作数和元算术运算符构成一个算术表达式。

一元算术运算符共有4种,如下所示。

运算符名称表达式功能

+—元加+opl取正值

--元减-opl取负值

++增量++op1,op1++加1

-减量--opl,opl-减1

一元加和一元减运算符仅仅表示某个操作数的符号,其操作结果为该操作数的正值或负值。

增量运算符将操作数加1,如对浮点数进行增量操作,则结果为加10。

减量运算符将操作数减1,如对浮点数进行减量操作则结果为减10。

2、二元算术运算符

二元算术运算符共有5种,如下所示。

运算符表达式名称及功能

+opl+op2加

-opl-op2减

*opl*op2乘

/opl/op2除

%opl%op2模数除(求余)

3、算术运算符的优先级

在稍微复杂一•些的算术表达式中,算术运算符的优先级按下面次序排列:++和-的级别最高,

然后是*和/以及%,而+和-的级别最低。此外,为了增强程序的可读性,通过括号可以明显

地改变运算的顺序。

【考点三】关系运算符和关系表达式

关系运算符都是二元运算符,共有6种,如下所示。

运算符表达式功能返回true值时的情况

>opl>op2比较op1是否大于op20Pl大于op2

<opl比较opl是否小于op2opl小于op2

>=opl>=op2比较opl是否大于等于op2opl大于等于op2

<=opl<=op2比较opl是否小于等于op2opl小于等于op2

==op2==op2比较opl是否等于op2opl等于op2

!=opl!=op2opl和op2不要等性测试opl不等于op2

【考点四】布尔逻辑运算符和布尔逻辑表达式

布尔逻辑运算符共有3种,即逻辑与(&&)、逻辑或(II)和逻辑非(!),其操作结

果也都是布尔型的。

【考点五】位运算符和位运算表达式

1、位逻辑运算符

(1)按位取反运算符。

(2)按位与运算符&。

(3)按位或运算符I0

(4)按位异或运算符

(5)不同长度的数据进行位逻辑运算。

2、移位运算符

(1)算术右移运算符〉〉。

(2)算术左移运算符〈

(3)逻辑右移运算符〉〉〉。

3、位运算符的优先级

在复杂一些的位运算表达式中,位运算符的优先级顺序排列如下:~的优先级最高,其次是

〈〈、〉〉和〉〉〉,然后是&,再次是最后是I。

【考点六】赋值运算符和赋值表达式

(1)赋值运算符。

赋值运算符(=)把一个表达式的值赋给一个变量,在赋值运算符两侧的类型不一致情况下,

如果左侧变量类型的级别高,则右侧的数据被转化为与左侧相同的高级数据类型后赋给左侧

变量:否则,需要使用强制类型转换运算符。

(2)扩展赋值运算符。

Java中扩展赋值运算符及等价的表达式。

运算符表达式等效表达式

+=op1+=op2op1=op1+op2

-=op1-+op2opl+opl-op2

*=op1*=op2op1=op1*op2

/=opl/op2opl=opl/op2

%=opl%=op2opl=opl%op2

&=opl&=op2opl=opl&op2

I=oplI=op2opl=oplIop2

opl^=op2opl=opl^op2

〉〉=opl)〉=op2opl=opl>〉op2

〈(=opl〈(op2opl=opl〈(op2

〉〉〉=opl)〉〉=op2opl=opl)〉〉op2

【考点七】条件运算符与条件表达式

条件运算符是三元运算符,用“?”和“:”表示。三元条件表达式的一般形式为:

expression!?expression2:expression3

其中表达式expression1应该是关系或布尔逻辑表达式,其计算结果为布尔值。

【考点八】运算符的优先级和复杂表达式

Java中运算符的优先级顺序。如下:

优先次序运算符优先次序运算符

I[]()9&

2++-!~instanceof10"

3new(type)11I

4*/%12&&

5+-13II

6〉〉〉〉〉<(14?:

7〉〈〉=〈=15=+=-=*=/=%=A=

8==!=16&=I=〈〈=〉〉=〉〉〉=

【考点九】表达式语句

在由++和-运算符形成的一元算术表达式和赋值表达式后加上分号可直接作为语句来使用,

这种由表达式直接构成的语句叫做表达式语句。

第4章流程控制

【考点一】概述

Java是面向对象的编程语言,通过构造多个类之间的关系来完成程序的功能:但是在编写类

的时候,主要通过一定的程序流程来实现类中方法的功能。Java的程序流程是由若干条语句

组句块或称复合语句。

【考点二】分支语句

1、条件语句

条件语句根据判定条件的真假来决定执行哪一种操作。

(1)if结构

Java语言中,最简单的条件语句是if结构,采用的格式如下:

if(条件)statement;

或者

if(条件){block}

第一种情况下,在条件为真时,执行一条语句statement;否则跳过statement执行下面的语

句。第二种情况下,在条件为真时,执行多条语句组成的代码块block;否则跳过block执

行下面的语句。

上述格式中的“条件”为关系表达式或布尔逻辑表达式,其值为布尔值。

(2)if_else结构

Java语言中,较常见的条件语句是if-else结构。采用的格式如下:

if(条件)

statement1;或{block1}

else

statement2;或{block2}

在条件为真时,执行语句statement(或代码块blodkl),然后跳过else和statement2(或

代码块block2)执行下面的语句;在条件为假时,跳过语句statement1(或代码块blockl)

执行else后面的statement2(或代码块block2),然后继续执行下面的语句。

2、多分支语句

Java语言提供了多分支语句swirch。switch语句根据表达式的值从多个分支中选择一个来执

行,它的一般格式为:

switch(expression){

casevalue1:statementl;

break;

casevalue2:statement2;

break;

1

casevalueN:statementN;

break;

[default:defaultstatement;]}

对switch语句说明如下:

(1)表达式expression只能返回这几种类型的值:int、byte、short和char。

(2)case子句中的值valuel必须是常量,而且所有case子句中的值应是不同的。

(3)cefault子句是任选的。

(4)break语句用来在执行完一个case分支后,使程序跳出switch语句的执行。

(5)case分支中包含多条语句(即statement为一连串语句序列)时,可以不用大括号。

(6)switch语句的功能可以用if-elseif结构来实现。

【考点三】循环语句

-一个循环语句一般应包含4部分内容。

(1)初始化部分(initialization);

(2)循环体部分(body);

(3)迭代部分(iteration);

(4)判断部分(termination);

1、while循环

while循环又称“当型”循环,它的一般格式为:

[initialization]

while(termination)

(

body;

[iteration:]

)

说明如下:

(1)首先初始化控制条件,这部分是任选的。(2)当布尔表达式(termination)的值为true

时,循环执行大括号中的语句,其中迭代部分是任选的.

(3)while循环首先计算条件就不满足,则大括号中的语句或代码块一次都不会被执行。这

是“当型,,循环的特点。

(4)while循环通常用于循环次数不确定的情况,但也可以用于循环次数确定的情况。

2、do-while循环

do-while循环又称“直到型”循环,它的一般格式为:

[initialization]

do{

body;

[iteration:]}while(termination);

说明如下:

(1)do-while结构首先执行循环体,然后计算终止条件,若结果为true,则循环执行大括

号中的语句或代码块,直到布尔表达式的结果为falseo

(2)与while结构不同的是,do-while结构的循环体到少被执行一次,这是“直到型”执行的

特点。

3、for循环

for循环的一般格式为:

for(initialization;termination;iteration)

(

body;

)

说明如下:

(1)for循环执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执

行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。

(2)可以在for循环的初始化部分声明一个变更,它的作用域为整个for循环。

(3)for循环通常用于循环次数确定的情况,但也可以根据循环结束条件完成循环次数不确

定的情况。

(4)在初始化部分和迭代部分可以使用逗号语句来进行多个操作。逗号语句是用逗号分隔

的语句序列。

(5)初始化,终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,

相当于一个无限循环。

【考点四】跳转语句

1、break语句

break语句是最常用的用法是在switch语句中,通过break语句退出switch语句,使程序从

switch结构后面的第一条语句开始执行。

在Java中,还可以用break语句退出循环,并从紧跟该循环结构的第一条语句处开始执行。

2、continue语句

break语句用来退出循环,并从紧跟该循环语句的第一条语句处开始执行;而continue语句

则跳过循环体中下面尚未执行的语句,回互循环体的开始继续下一轮的循环。当然,在一一

轮循环开始前,要先进行终止条件的判断,以决定是否继续循环,对于for语句,在进行终

止条件的判断前,还要先执行迭代语句。

3、return语句

return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句

继续程序的执行。返回语句有两种格式:

returnexpression;return;

return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中。

【考点五】循环语句与分支语句的嵌套

一个循环体内又可包含另一个完整的循环语句,构成多重循环语句。

循环语句与分支语句可相互嵌套,以实现复杂算法。分支语句的任意一个分支中都可以嵌套

一个完整的循环语句,同样循环体中也可以包含完整的分支语句。

【考点六】递归(recursion)

(recusion)是常用的种解决问题的方法,即把问题逐渐简单化。递归的基本思想是“自

己调用自己“,一个使用递归技术的方法将直接或间接地调用自身的方法。利用递归,可以

用简单的程序来解决某些复杂的计算问题。

递归结构的主要内容包括两个部分:

(1)定义递归头。

(2)定义如何从同性质的简化问题求得当前问题。

执行递归方法时,首先逐级递归调用展开。

递归结构的优点之一是程序非常简洁,但是递归调用会占作大量的系统堆栈,内存耗用多,

在递归调用层次较多时,运算速度较之循环结构慢慢多。

第5章类、数组和字符串操作

【考点一】概述

Java是面向对象语言,面向对象的思想是将客观事物都作为实体,而对象通过实体抽象得到。

程序是通过定义一个类,对类进行实例化(也称为创建对象)来实现。

类是变量和方法的集合体。类可以嵌套定义。类是Java程序中基本的结构单位。

数组是最简单的复合数据类型,是有序数据的集合。数组的元素可以是值(基本数据类型)、

对象或其他数组。一个数组中的所有值都必须是相同的数据类型。

文本字符串是一种参考数据类型,它一身是由java、lang、String定义的对象。

1、类定义

Java语言编写程序通过新的对象类型机制,就是允许自定义对象类型一类,它是程序的基

本要素,由成员变量和成员方法组成。实例化一个类,就能得到一个对象。类的成员变量可

以是基本类型数据、数组、或类的实例。成员方法只在类中定义,用来处理该类数据。类提

供外界访问其成员方法的权限,通常,类成员数据都是私有的,而方法是公有的,外界只可

能访问成员方法。

(1)类声明

格式:[修饰符]class类名[extends父类名][implements类实现的接口列表]

其中用[]括起来的内容为可选项。关键字class是定义的开始,类名应符合标识符命名规

则,第一个字母大写并具有类功能特征。修饰符指明类的访问控制符和类型说明符。关键字

wxtends指明该类是子类,它的父类名紧跟在后,子类与父类之间有继承关系。关键字

implements指明该类实现的接口。后跟接口名列表。修饰符包括:

①public访问控制符指明该类为公共类,可被其他类访问或引用其成员变量和成员方法。

②默认(也称friendly)即没有访问控制符,表示该类只能被同一个包的类访问和引用,也

不能用import语句引入。

③abstract抽象类,指明不能实例化的类。

④final是最终类,指明该类不能有子类。

(2)类体

格式:

class类名

成员变量声明

成员方法声明

成员变量和成员方法都可用public、protected、private和default来限定访问权。许多细节将

在后面讨论。

(3)成员变量

成员变量声明格式:

修饰符【public,protected,private,static,final,transient,volatile]

type变量名:其中type可以是java语句中任意数据类型。而修饰符的含义:

①public指明变量为公有。由于面向对象技术的封装要求,应尽量少用公共变量,而是通过

公共方法类间接访问类的成员变量,从而提高程序的稳定性。

②protected指明变量为保护访问。可被同一个包中其中他类、不同包中该类的了类以及该类

自己访问和引用。保证所有子类都可访问父类,不管这些子类被封装在哪里。

③private指明变量为私有访问。只能被该类自一访问或调用,是对成员变量的最高级保护。

④static指明变量为静态变量,否则为实例变量。静态变量不需要类的实例化就可被类直接

调用。

⑤final指明变量为常量。注意用大写字母。

©transient指明变量为暂时性变量,用实现不同对象存档功能。

⑦volatile指明多个线程共享的变量,保证各线程对该变量访问的一致性。

(4)成员方法定义和调用

所谓成员方法,是指作为类的成员的方法。方法的定义由方法声明和方法体组成。方法定义

的形式如下:

returnTypemethodName(paramlist)[throwsexcetions]

它表明了在一个方法调用前要知道的一些信息:

①方法的名称。

②参数的类型和名称。

③方法返回值的类型。

④方法的抛出的异常类型。

方法声明格式:

修饰符[public,protected,private,static,final,abstract,native,synchronized]

returnTypemethodName([paramlist])[throwsexceptions]

其中修饰符public、protected>private>static>final与成员变量声明意义相同,都是定义方

法访问权限。abstract指明方法是否可以重写,native指明代码是由各种语言集成,

synchronized指明多线程可并发共享访问。

方法体是对方法的实现,包括局部变量声明、java合法指令。

注意:Java中的方法的参数传递是传值调用,而不是地址调用。方法不能改变参数值,但中

以改变变量值,两个对象之间的参数字段,不能相互交换。

(5)方法重载

方法的重载是指多个方法可以享用相同的名字,但参数的数量或类型必须不完全相同,邓方

法有所不同,它实现了Java编译时的多态(即静态多态性)性。

(6)构造方法

构造方法是为对象初始化操作编写的方法,用它来定义对象的初始状态。在Java语言中的

每个类都有构造方法,它也是由方法名、参数和方法体组成的。构造方法名必须与类名相同,

它没有返回值,用户不能直接调用它,只能通过new自动调用。

构造方法有下列特点:

①因为构造方法名与类名必须相同,所以方法首字母小写规则对它不适用。

②构造方法是给对象赋初值,没有返回值,但不用void来声明。

③构造方法不能被程序调用。

④构造方法可由编程人员在类中定义,默认时由Java语言自动生成。

⑤构造方法可以重载实现不同的初始化方法,调用时按参数决定调用哪个方法。

2、对象、接口与色

对类实例化,可以生成多个对象,通过这些对象之间的消息传递进行交互,可完成很复杂的

功能。一个对象的生命周期分为3个阶段:生成、使用和清除。

(1)对象的生成

对象是一组相关变量和相关方法的封装体,是类的一个实例。对象的特征是对象的行为、状

态和身份。对象生成包括声明、实例化和初始化三方面内容。一般格式是

typeobjectName=newtype(【参数】);

其中:typeobjectName声明是定义对象的类型,它包括类和接口的复合类型。new关键字是

实例化一个对象,给对象分配内存,它调用对象的构造方法,返回该对象的引用(存储对象

所在堆地址和有关信息,并非内存直接地址)。new可以实例化类的多个不同的对象,分配

不同的内存。

(2)对象的使用

对象的使用原则是先定义后使用。

①通过“•”运算符实现对成员变量的访问和方法调用。其格式为:

对象名•调用的方法名或变量名

②将一个对象声明为类的成员时要注意在使用前必须对该对象分配内存,也可以用private

修饰符保证数据安全。

③在方法中使用对象作为参数时,采用引用调用。

(3)对象的清除

对象的清除指挥释放对象所占用的内存。归纳起来对象清除的途径为:

①依靠Java的垃圾回收机制回收内存。

②调用Systtem.gc(),请求垃圾回收。

③Java系统开始运行时,自动调用java.lang.Object.finalize()释放内存。

④在程序中调用重写的finalize()释放系统资源,其格式为:

protectedvoidfinalize()throwsthrowable{i

super.finalize();

)

(4)接口

接口是一种只含有抽象方法或常量的一种特殊的抽象类。在Java语言中,用abstract修饰符

定义的类称为抽象类,在其中的方法称为抽象方法。abstract类的格式为:

abstractclassabstractClass{

I

)

接口是不包含成员变量和方法实现的抽象类,它只包含常量和方法的定义。接口的主要功能

是:

①不管类的层次,可实现互不相关的类具有相同的行为。

②通过接口说明多个类所需实现的方法。

③通过接口可以了解对象的交互界面,无需了解对象所对应的类。

接口定义由接口声明和接口体组成。

(5)包

为解决同名类会发生冲突矛盾,Java采用包来管理类名空间。

定义一个包要用package关键字。用package语句说明一个包时,该包的层次结构必须与文

件目录的层次相同。否则,在编译时可能出现查找不到的问题。

使用一,个包中的类时,首先要用关键字import导入这些类所在的的包。Java语言的javaJang

包是编译器自动导入的。因此,编程时使用该包中的类,可省支import导入。但使用其他

包中的类,必须用import导入。

【考点二】类成员修饰符、继承、内部类、类库

(1)类及类成员修饰符

常用的类成员修饰符如下:

修饰符可修饰对象含义

publie类

接口

成员变量,成员方法可跨包访问。

private成员变量,成员方法类内可访问

protected成员变量,成员方法包内可访问。

static类

类变量

类方法静态内部类不能有对外调用,成员独立于该类的任何实例对

象。类变量是全局变量。

类方法是全局方法。在其中不能使用this,super。不能创建

内部类的实例。

synchronized成员方法用于保持线程同步。

final类

成员变量

成员方法没有子类的类。

不能改变值的变量的变量不能被覆盖的方法。

不能被覆盖的方法。

不能改变值字段。

abstract类

接口

成员方法类中含没有实现的方法,该类不能实例化。

所有接口都是抽象的,是接口缺省修饰符。

没有实现的方法。

修饰符可分为访问限定符和非访问限定两类。

(2)继承

继承性是面向对象方法的一个重要基本特征,它使代码可重用,可降低程序复杂性。Java

语言中,所有的类都是通过直接或间接地继承java,lang,Objecter而得到的。Java不支持

多重继承。通过在类声明中加入extends子句来创建子类,其格式为:

classSubClassextendsSuperClass{

重写方法必须遵循两个原则是编译器为了实现面向对象方法的多态性,保证程序健壮,避免

程序招待时出现访问权限的冲突,并不会漏了异常的捕获。super的使用有3种情况:

①用于访问被隐藏的父类成员变量,其格式为:

super,变量名;

②用于调用被重写的父类方法,其格式为:

super,方法名;

③用于调用父类的构造方法,其格式为;

super([参数列表])

(3)内部类

在一个类的内部嵌套定义的类称为内部类(InnerClass)«特点是:①内部类的类名只能在

定义它的类或程序段中或在表达式内部匿名使用,外部使用它时必须给出类的全名。

②内部类可以使用它所在类的静态成员变量和实例成员变量,也可使用它所在类的方法中的

局部变量。

③内部类可用abstract修饰定义为抽象类,也可用private或protected定义。

④内部类可作为其他类的成员,而且可访问它所在类的成员。

⑤除static内部类外,不能在类内声明static成员。

(4)类库

类库以包的形式组织,是包的集合。早在J2SE的131版,类库已有76个包,目前已发展

到J2SE1.4.2版,类库的包已过百。

java.lang包。该包中所有类都在运行时,由java解释器自动引入,程序不用import语句都

可使用其中任何一个类。该包有接口、类、异常等组成。它是Java语言的最底层的类。它

包括的最主要的类有:

①Object类是Java所有类的根类,其他类都由它扩展而来。它定义的方法包括:

•preorectedObjetclone()throwsCloneNotSupporteedException,该方法生成当前对象的拷贝,

并返回该拷贝对象。凡调用该方法的类都应该的类都应该实现cloneable接口,否则运行时

会抛出异常。

•publicfinalClassgetClass(),该方法返回一个当前对象运行时的Class类对象。

•publicinthashCode().该方法返回一个hash值。

•publicBooleanequals(Objectobj),该方法比较当前对象与形参对象相同否,相同返回true,

否则返回falseo

•publicStringtoString(),该方法返回一个当前对象住处的字符串。

•publicfinalvoidnotify(),该方法唤醒一个等待线程。

•publicfinalvoidnotifyAl1(),该方法唤醒所有等待线程。

•publicfinalvoidwait(longtimeout)throwsInterruptedException,该方法让当前线程进入等待

行列。

•publicfinalvoidwait(longtimeout,intnanos)throwsInterruptedException,该方一法让线程等待

时间是两个形参之和。

•publicfinalvoidwait()throwsInterruptedException.该方法等同wait(0)«

•publicvoidfinalize()throwsThrowable,该方法把对象从内存中清除。

②Class类是用于类操作规程的类,Class对象由Java编译器自动生成,隐藏在.class文件中,

它在运行时为用户提供信息。另多此一举这提供运行时动态装入环境的操作类ClassLoader,

这两类常用方法包括:

•staticClassForname(StringclassName),该方法返回指定类的对象。

•StringgetName(),该方法获得Class对象的类名。

•ClassLoadergerClassLoader(),该方法返回ClassLoaer对象。

•boolislnterfae(),该方法返回判断是否接口的布尔值。

•ClassgetSuperclass(),该方法返回当前对象父类的Class对象。

•StringtoString(),该方法返回当前类或接口的名字。

•abstractClassloadClass(Stringname,Booleanresolve),该方法把类名分解成对象,分解成

功返回Class对象,否则返回nullo

•finalClassdefineClass(Stringname,bytedata[],intlength),该方法把一个字节数组转换

成一个类的对象,对象以data数组的offset为起点,length为字节长度构成。

•finalvoidresolveClass(Classc),该方法分解一个类。

•finalClassfindSystemClass(Stringname),该方法用来查找和装入系统类。

③System类是一个final类,即不能被实例化的类,它主要提供标准输入、输出和系统环境

信息。它有3个很有用的成员变量:in、out和err,分别表示标准输入流对象、标准输出流

对象和出错流对象。主要方法有:

•staticlongcurrentTimeMillis(),该方法返回系统时间,以毫秒为单位。

•staticStringgerProperties(),该方法获得系统环境信息。

•staticStringgerProperties(Stringkey,Stringdef)该方法获得系统变量值。

•staticvoidsetPtoperties(PropertiesP),该方法设置系统特征。

•staticvoidgc(),该方法运行垃圾收集器。

•staticvoidloadLibrary(Stringlibname),该方法装入一个动态链接库

©Thread类是提供线程操作和管理的类。

其次,看看实作工具Javauitl包。它包括许多常用功能的类的和接口。主要包括:

①GrggorianCalendar日历类提供日期和时间的表示,它以格里历(即阳历)来计算。主要方

法有:

•intget(intfield),获得一个特定字段的值,参数field是其父类Calendar定义的许多参数之

一(如Calendar.YEAR、CaIendar.MONTH>Calendar.DATE等)。

•voidset(intyeat,intmonth,intdate),设置日期字段值。

•voidset(intyear,intmouth,intdate,inthour,intminute,intsecond),设置Fl期和时间字

段值。

•voidadd(intfideld,intamount),在字段上加指定值。

②Vector类实现了动态分配对象列表,适用于可变对象数组的类,它的内存容量可按照需要

自动增加。主要方法有:

•ensureCapacity(),保证指定元素的最小容量。

•trimToSze。,将当前元素的容量高速到最小。,2(1(1£1©1相1曲),可.加新元素。

•get(),可获得Vector中的元素。

•set(),可修改Vector中的元素。

•temove(),可删除Vector中的元素。

•elemnetAt(),可直接访问元素。

•indexOf(),可确定元素的位置。・size(),返回Vector的容量大小。

③Stack类是实现先进后出的对象栈,它是Vector的子类,它不能直接被访问,中能从栈顶

压入或弹出。它的主要方法有:

•empty(),判断栈是否为空是空返回true。

•peek(),返回栈顶对象。

•pop(),弹出栈顶的一个元素。

•push(Object),从栈顶压入一~个元素。

•search(Object),查找栈内一个元素。

④Dictionary类是抽象类,不能实例化去创建•个对象,它是关键字和值的数据对存储的集

合。它的抽象方法有:

•elements。,返回一个枚举元素。

•ger(Object),返回关键字所对应的值。

•isEmptyO,判断字典是否为空,如为空返回true。

•keys(),返回关键字的一个枚举元素。

•put(Object,object),存入一对关键字和值到字典中。

•remove(Object),按照关键字从字典中删去一个元素。

•size(),返回存储元素的数量。

4、内部类的应用实例

本程序是银行出纳的一种业务,其功能是对10000元人民币按照2%的年利率存入银行,计

算每年的存款数,每10秒显示一行,用键盘对话框退出。内部类用于计算递增的存款数额

并显示。内部类所实现的Timer监听器接口,完成了定时器的事件处理。

【考点三】一维数组

数组是一种复合数据类型,在Java中,数组是作为对象来处理的。数组有限元素的有序集

合,数组中的元素具有相同的数据类型,并可用统一的数组名和下标来惟一确定其元素,元

素是数组中不可分的最小单位。

1、定义数组、创建数组

在Java中定义-维数线格式为:typeattayName[];或type[]arrayName:

创建--个数组的格式为:arrayName=newtype[arraySize]

在Java中定义并创建一个数组对象:type[]arrayName=newtype[arraySize];

2、初始化数组

所谓数组初始化即对已经定义好的数组元素赋值。

(1)静态初始化

静态初始化适用数组元素的个数较少,而且是初始元素可以枚举的情况。

(2)动态初始化

用new动态初始化时,数组元素的默认值如下:

序号元素类型默认初绐值

1booleanFalse

2char'uOOOO'

3整数0

4浮点数0.0

5对象null

对复杂类型的数组初始化,需要两步完成。首先,为每个数组元素分配引用空间。其次,为

每个数组元素分配空间并赋初值。

【考点三】多维数组

(1)二维数组定义

二维数组定义的格式为:typeattayName[][];或type[][]arrayName;

(2)初始化二维数组

①静态初化:即在定义数组的同时分配内存空间。

②动态初始化:可直接对每一维分配空间或从最高维开始对每维分配空间。

【考点四】字符串操作

1、字符串的表示

(1)字符串的表示

字符串常量用""括起来的字符序列。字符串常量可以用来直接初始化一个String对象。

(2)用String类表示字符串

在Java中,String类提供构造方法可生成一个空串,也可通过字符数组或字节数组来生成一

个字符串对象,其中,char[]、byte[]用来生成字符串的数组,startindex、offset指定

字符串在数组中的起始下标,numClass、length表示字符个数。

(3)用StringBuffer表示字符串

StringBuffer类提供长度可变字符串对象的表示,它提供下列构造方法对可变字符串对象初

始化:

StringBuffer();

StringBuffer(intlength);StringBuffer(Stringstr)

2、字符串的访问

Siring类包括的方法有:Length。、charAt。、indexOf。、getChars。、getBytes。、toCharArray。

等.

(1)提取字符串长度

Stringgreeting="Helle";

intn=greeting.length();//返回字符串的字符个数n=5

(2)提取字符串中指定字符

charlast=greeting.charAt(4):〃从字符串0数到4的字符是'0'。

(3)提取字符串中多个字符

publicvoidgetCharsw(intsrcbegin.intend,charbufE],intdstbegin);

其中,srcbegin指定要提取的第1个字符在该字答串的位置,end指定要提取的最后字符在

该字符串的位置,buf[]是目的字符吕存储的数组,dstbegin指定提取字符插入目的字符

串的位置。

StringBuffer类包括方法有:lengty。、charAt。、getChars。、capacity。。

(4)查询字符

在字符串中查询指定字符或子串时,可用indexOf()和lastIndexOf()方法。如查询成功,返回

所查字符的位置。如不成功,返回-1。

3、字符串的修改

(1)对string的修改

因为它是固定长度字符串,修改必须通过实例。String提供concat。、teplace。、substring。、

toLowerCase()AtoUpperCase。等方法。

PublicStringconcat(Stringstr),将当前字符串对象与指定str字符串相连。

publicStringreplace(charoldChar,charnewChar),用新字符替换老字符。

publicStringsubstring(intbeginindex),按指定的起始位置获得子符串。

publicStringsubstring(intbeginlndex,intendindex),按指定范围去获得字符串中的子字符串。

publicStringtoLowerCase(),将字符串中所有字符变为小写。publicStringtoUpperCase(),将

字符串中所有字符变为大写。

①两个字符串的连接。

Stringstrl='*abcn;

Stringstr2=strl.concat("cden);//"abccde"

②替换掉一个字符串中的所有与指定字符相匹配的字符。

str.replace(",,#*);〃将字符串str中的所有的空格替代为#。

③Java允许将字符串用+号连接起来。

Stringexpletive="expltive";

StringPG13="deleted”;

Stringmessage=expletive+PG13;

④提取子字符串。

Stringgreeting="Hello"

Strings=ngreeting.substring(O,3)";

取字符串greeting的第0个到第3个字符组成新串:"Hell”。

(2)对StringBuffer的修改

因为StringBuffer类是表示可变长度字符串,它可以在字符中插入字符和在字符串尾加字符。

缓存不必管理,Java解释器自动分配。它的方法包括:append。、insert。、SetCharArQ。

4、字符串的比较

测试字符串是否相等,可用equals。方法。

5、其他操作

(1)键盘读取字符串的对话框

javax.swing.JOptionPane用于从控制台键盘读科字符串。

(2)将字符串对象转换为基本数据类型

intage=Integer.parselnt(input);//进行从字符串到整数的类型转换。

6、程序实例

本程序的功能是进行键盘对话框测试。意图在于学会JOptionPane类的用法。同时对于申输

入、串定义、串类型转换有所了解。

第6章异常处理

【考点一】概述

异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,它会引起程序的中断,

影响程序正常运行。

在Java语言中,异常机制是:一旦出现异常,可以由运行的方法或虚拟机生成一个异常对

象,它饮食异常事件的类型以及发生异常时程序的状态等信息。异常对象从产生和被传递提

交始Java运行系统的过程称为抛出(throw)异常。在Java运行时,如获得一个异常对象,

它会自动寻找处理该异常的代码,它从生成异常对象的代码构件开始,沿着方法调用栈,按

导回溯寻找,直至找到处理该类异常方法为止,再由Java运行系统将该异常对象交给该方

法去处理,这一个过程称为捕获(catch)异常。Java语言能按机制来接收并处理异常,是

要求所指异常对象必须是已定义好的异常类的实例。Java语言中的类库,已定义有许多异常

类可利用。异常对象用new来创建,一旦创建合,就停止当前执行路径,再从当前环境中

释放异常对象的地址,此时异常机制就接管•切,把程序转向异常处理器,去解决程序是否

能继续进行还是报错。

Java语言的类库中提供一个别Throwable类,所有的异常对象都必须是它的实例。Throwable

类中的方法对抛出异常进行描述。异常在Java程序中是有层次的。

Throwable类是直接Object类继承来的,是所有异常类的根(父类),它的定义如下:

publicclassThrowableexceptionObjectimplementSerializableIsWpublicThrowable()和

publicThrowable(Stringmessage)两个构造函数,其中的字符串参数可利用getMessage()方

法去获得参数内容。

Throwable类分为Error和Exceptiong两子类,Error类包括动态连接失败、硬件设备和虚拟

机出错等,通常的Java应用程序不会捕获和抛出这类异常,而是捕获和抛出Exception这类

异常,它包括运行时出现的异常,并对这类异常作出处理。

Throwable类有publicThrowable()和publicThrowable(Stringmessage)两种构造函数,包

含getMessage。、toString。、printstackTrace()>fillStackTrace()方法,其中getMessage()方

法用来返回带参数构造函数创建异常时的参数内容,对无参数构造函数而言,用它返回的是

空值;toString。用来返回异常的类名和getMessage()能得到的内容,两面三刀者用冒号分

隔,如getMssage。得的是空值,它只返回异常类名:printStrace()方法用来在标准输出设备

上输出堆栈使用的跟踪;fiUStrackTrace()方法用在重新抛出异常时对堆栈的跟踪。

【考点二】异常类型

按异常处理不同可分为运行异常、捕获异常、声明异常和抛出异常儿种。

1、捕获异常

当异常已被定义时,必须通过try-catch-finally语句处理它,其语法如下:

try(

!〃可能出现异常的程序段

}catch(ExceptionName1e){

;〃异常处理程序段1}catch(ExceptionName2e){

!〃异常处理程序段2}

I

}finally{

i〃最后异常处理程序段

)

捕获异常的第1步是try{…}语句选定异常的范围,由招待它的程序代码段决定可能生成异

常对象并抛出;第2步由它的catch子句(一个或多个)去处理它所抛出的异常事件,catch

子句要求一个形式参数,指明所捕获的异常类型,该类型必须是Throwable的子类,运行时

Java解释器通过该参数值将被抛出的异常对象传递给相应的catch程序段,由该程序段处理,

它可用Throwable的getMessage()方法获得异常事件信息,还可利用Throwable的

printStackTrace。方法跟踪异常事件发生后招待堆栈的内容;第3步是通过finally子句完成,

释放资源,作为异常处理的统一出口。

2、声明异常

Java语言中,有时•个方法生成一个异常,但该方法并不能确定如何处理此异常,如找不到

文件之类的展品常,必须将异常传递给调用方法,由调用它的方法来处理,这种时候方法用

声明异常抛出,让展品常对象可从调用栈向后传递,直至有相应的方法捕获它为止。声明异

常抛出用Ithrows子句来完成声明,throws子句包含在方法的声明之中,语法如下:

throwsexceptionList〃异常列表是用逗号分隔的多个异常

3、抛出异常

在捕获一个异常之前,必须先有异常抛出,才生成一个异常对象,这就用报出异常来实现。

抛出异常的程序代码可以是Java应用程序,或者是JDK中的某个类,还可能性是JVN。抛

出异常、生成异常对象都通过throw语句实现,如:

lOExceptione=newlOException;

throwe:

当然,能抛出的异常必须是Thtowable类或其子类的实例。利用throw语句不可以自定义异

常类抛出。

【考点三】处理异常

Rtry和catch语句

在捕获异常时要用try-catch语句,该语句执行时,解释器把可能产生异常的代码段形成一

个“警戒区”,该“警戒区”由try引导。“警戒区”后面是catch从句,一个“警戒区”后面可接多

个catch从句。catch的程序段由catch引导。try“警戒区”代码包括一些简单语句或方法调用,

在它遇到异常情况时,停止执行而转跳到相应处理异常的程序,这就由catch来控制。catch

子句都带一个参数,该参数是某个异常的类及其变量名(该异常对象的指针),catch用该

以数去与抛出异常对象的类进行匹配,匹配上后就去执行该catch后的程序段,即处理该异

常;如匹配不上就跳到下个catch,直至找到为止。

注意:try内部不同的方法调用有可能产生相同的异常,但中需一个catch从句。

与catch匹配原则:

①不要用一个子类去捕获父类的异常,尽可能用一个父类去捕获其所有子类的异常。

②catch从句的顺序排列要注意,应该将最特殊的排在最前面,依次逐步一般化。

2、finally语句

捕获异常的统一出口通过finally从句,因此对catch而言,无论由哪个捕获异常,最后一定

去执行finally从句,保证控制流在转到其他路径以前,程序的状态能被统一管理。另外,

在系统执行时,遇到异常,就自动跳转,出现异常语句后面的程序就不被执行。实际上,经

常还需要做一些与系统相关的工作,如释放相关的工作,如释放资源、关闭文件、关闭数据

库等,这就可利用finally从句来完成。

3、异常处理的原则

Java语言的异常处理机制是要掌握几条原则:

①把应用程序的异常事件分类,利用异常的层次来动态控制。在捕获或声明异常时•,应注意

选择适当的异常类选择适当的地方处理,是在方法内处理还是用throws子句传递给调用栈

的上层。

②把异常处理的代码与正常代码分开,简化程序并增加可读性。如对异常不知道在何时何地

了生,也不知该如何处理,可交给虚拟机去处理。

③利用finally语句作为异常处理的统一接口。

④能用简单测试不要用异常控制,对异常不要过分细化,也不要压制,不要介意对异常的传

递。

⑤自定义的异常类,都是Throwable及其子集,除了在运行时产生或不易预测外,都定义为

非运行时的异常。

第7章输入输出及文件操作

【考点一】概述

Java的输入输出流包括字节流、字符流、文件流、对象流以及多线程之间通信的管道流。

1、计算机数据的I/O方向

(1)流的概念

在计算机中,1984年由C语言第一次引入“流”的概念。“流'’可以看做是一个流动的数据缓

冲区。数据从数据源流向数据目的地。流的传送是串行的。最常见的数据源是键盘,最常见

的数据目的地是屏幕。从键盘键入文本,文本字符通过内存流向屏幕,最终在屏幕上显示出

来。

(2)I/O流的方向

输入输出在计算机系统中起到了采集数据和提供数据处理结果的双重作用,它是以中央处理

器(含控制器和内存)为此,以网络及外部设备为彼的双向数据传输机制。常用的外部设备

如键盘、显示器、硬盘、扫描仪、打印机、网络等等。凡是从外部设备流向中央处理器的数

据流,称

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论