JAVA入门教程_强烈推荐(课堂PPT)_第1页
JAVA入门教程_强烈推荐(课堂PPT)_第2页
JAVA入门教程_强烈推荐(课堂PPT)_第3页
JAVA入门教程_强烈推荐(课堂PPT)_第4页
JAVA入门教程_强烈推荐(课堂PPT)_第5页
已阅读5页,还剩908页未读 继续免费阅读

下载本文档

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

文档简介

1、 2. 类的定义类的定义 Java源程序中可以有多个类的定义,但必须有一个主类,这个主类是Java程序运行的入口点。在应用程序中,主类为包含main方法的类;在Applet中,主类为用户自定义的系统Applet类的扩展类。在Java源程序中,主类的名字同文件名一致。 类的定义又包括类头声明和类体定义。类体中包括属性声明和方法描述。下面来看一个例子,其中斜体表示的语句行为主类类头,主类类头下面从大括号“”开始到“”结束的部分称为主类类体。 【例2.1】下面是一个应用程序,也是一个Applet,既可以在命令行下运行,也可以嵌入到HTML网页中用appletviewer命令运行。运行时在界面上的第一

2、个文本框中输入你的名字,按回车键后,在第二个文本框中会显示“XXX,欢迎你来到Java世界!”,运行结果如图2.1所示。/程序文件名称为WelcomeApplet.java 注释语句 vent.*;java.awt.eimport ;java.awt.*import t.*;java.appleimport 引入包 public class WelcomeApplet extends Applet implements ActionListener 主类类头 txtDisp;TextField txtName;TextFieldlblName; Label属 性 r(this);ionList

3、eneame.addAct txtNp);add(txtDis e);add(txtNam e);add(lblNam 20);TextField(new isp txtD8);TextField(new ame txtN);new Label( lblName init() voidpublic请输入您的名字init方法 a.start(); f.show(); 400,300);f.setSize( a);,Centerf.add( a.init(); let();WelcomeAppnew a let WelcomeApp ; t(0);System.exi evt)wEvent sin

4、g(Windo windowClo voidpublic ter()WindowAdapnew wListener(f.addWindo );new Frame( f ame Frargs) gmain(Strin voidstatic public欢迎main主方法 关键字又称保留字,是指Java语言中自带的用于标志数据类型名或者程序构造名等的标识符,如public、double等。 转义符是指一些有特殊含义的、很难用一般方式表达的字符,如回车、换行等。所有的转义符以反斜线()开头,后面跟着一个字符来表示某个特定的转义符,如表2.1所示。表表2.1 转转 义义 符符引 用 方 法 含 义 b

5、 退格 t 水平制表符 Tab n 换行 f 表格符 r 回车 单引号 双引号 反斜线 2.2 数据类型、变量和常量数据类型、变量和常量2.2.1 数据类型数据类型 Java编程语言定义了八种基本的数据类型(见表2.2),共分为四类:整数类(byte、short、int、long)、文本类(char)、浮点类(double、float)和逻辑类(boolean)。表表2.2 Java的数据类型的数据类型分 类 数据类型 关键字 占字节数 缺省数值 取 值 范 围 字节型 byte 8 0 -2 72 7-1 短整型 short 16 0 -2 152 15-1 整型 int 32 0 -2 3

6、12 31-1 整数类 长整型 long 64 0 -2 632 63-1 文本类 字符型 char 16 u 0000 u 0000 u FFFF 浮点型 float 32 0.0F 浮点类 双精度型 double 64 0.0D 逻辑类 逻辑型 boolean 8 False True、False 1. 整数类整数类(1) 采用三种进制十进制、八进制和十六进制。2 十进制值是2;077 首位的0表示这是一个八进制的数值;0 xBAAC 首位的0 x表示这是一个十六进制的数值。(2) 具有缺省int。(3) 用字母“L”和“l”定义long。(4) 所有Java编程语言中的整数类型都是带符号

7、的数字。 2. 文本类文本类 (1) 代表一个16 bit Unicode字符。 (2) 必须包含用单引号( )引用的文字。 (3) 使用下列符号: a一个字符。 t-一个制表符。 u? -一个特殊的Unicode字符,?应严格使用四个十六进制数进行替换。 3. 浮点类浮点类 默认为double类型,如果一个数字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字为浮点数。4. 逻辑类逻辑类boolean数据类型有两种值:true和false。例如:boolean flag = true;上述语句声明变量flag为boolean 类型,它被赋予的值为

8、true。2.2.2 变量与常量变量与常量 常量是指整个运行过程中不再发生变化的量,例如数学中的= 3.1415,在程序中需要设置成常量。而变量是指程序的运行过程中发生变化的量,通常用来存储中间结果,或者输出临时值。 变量的声明也指变量的创建。执行变量声明语句时,系统根据变量的数据类型在内存中开辟相应的存储空间并赋予初始值。变量有一个作用范围,超出它声明语句所在的块就无效。 下面看一个使用各种类型变量声明并改变的示例。程序中pi为常量,s1、i1、l1、ch1、f1、d1、b1为全局变量,可以在方法change中发生改变,然后在方法main中输出。而s2、i2、l2、ch2、f2、d2、b2是

9、方法main的局部变量,它们的作用范围只局限于方法main中。 【例2.2】测试不同数据类型的变量,程序输出如图2.2所示。源程序代码如下:/程序文件名称为SetVariable.javapublic class SetVariable/全局变量static double pi = 3.141592654;/数学常量static short s1;static int i1;static long l1;static char ch1;static float f1;static double d1;static boolean b1;public static void main(Strin

10、g args)/局部变量short s2 = 35;int i2 = -32;long l2 = 34555L;char ch2 = A;float f2 = 897.89F;double d2 = 34.345;boolean b2 = false;/输出常量System.out.println(数学常量pi = + pi); /输出局部变量System.out.println(*局部变量*);System.out.println(短整型变量s2 = + s2);System.out.println(整型变量i2 = + i2);System.out.println(长整型变量l2 = +

11、l2);System.out.println(字符变量ch2 = + ch2);System.out.println(浮点数类型f2 = + f2);System.out.println(双精度型变量d2 = + d2);System.out.println(布尔型变量b2 = + b2); /调用方法修改全局变量的值change();/输出全局变量的值System.out.println(*全局变量*);System.out.println(短整型变量s1 = + s1);System.out.println(整型变量i1 = + i1);System.out.println(长整型变量l1

12、 = + l1);System.out.println(字符变量ch1 = + ch1);System.out.println(浮点数类型f1 = + f1);System.out.println(双精度型变量d1 = + d1);System.out.println(布尔型变量b1 = + b1); /方法:修改全局变量的值 public static void change() s1 = 125;i1 = 88;l1 = 987654321L;ch1 = B;f1 = 3.2590F;d1 = -1.04E-5;b1 = true; 图2.2 变量输出结果2.3 运算符和表达式运算符和表达

13、式 Java常用的运算符分为五类:算术运算符、赋值运算符、关系运算符、布尔逻辑运算符、位运算符。位运算符除了简单的按位操作外,还有移位操作。按位操作返回布尔值。 表达式是由常量、变量、对象、方法调用和操作符组成的式子。表达式必须符合一定的规范,才可被系统理解、编译和运行。表达式的值就是对表达式自身运算后得到的结果。 根据运算符的不同,表达式相应地分为以下几类:算术表达式、关系表达式、逻辑表达式、赋值表达式,这些都属于数值表达式。2.3.1 算术运算符及算术表达式算术运算符及算术表达式Java中常用的算术运算符如下:+加运算符-减运算符*乘运算符/除运算符%取模运算(除运算的余数)+增量运算符

14、-减量运算符 2.3.2 关系运算符关系运算符 关系运算符用于比较两个数据之间的大小关系,关系运算表达式返回布尔值,即“真”或“假”。Java中的常用关系运算符如下:= =等于! =不等于大于=大于等于=小于等于2.3.3 布尔逻辑运算符布尔逻辑运算符表表2.3 布尔运算符及规则布尔运算符及规则运算符 含 义 示 例 规 则 ! 取反 ! a a 为真时,结果为假;a 为假时,结果为真 & 非简洁与 a & b a、b 都为真时,结果为真;a、b 有一个为假时,结果为假 | 非简洁或 a | b a、b 有一个为真时,结果为真;a、b 都为假时,结果为假 异或 a b a、b 不同真假时结果为

15、真;a、b 同真或同假时,结果为假 & 简洁与 a & b a、b 都为真时,结果为真;a、b 有一个为假时,结果为假 | 简洁或 a | b a、b 有一个为真时,结果为真;a、b 都为假时,结果为假 2.3.4 位运算符位运算符Java中的常用位运算符如下:位求反&按位与|按位或按位异或右移不带符号右移 右移运算符对应的表达式为xa,运算的结果是操作数x被2的a次方来除,左移运算符对应的表达式为xa,运算的结果是操作数x乘以2的a次方。 【例2.6】测试位运算符,程序输出结果如图2.6所示。源程序代码如下:/程序文件名称为TestBit.javapublic class TestBitpu

16、blic static void main(String args)/变量初始化int a = 36;int b = 2;/定义结果变量int r1,r2;/计算结果r1 = a b;r2 = a b = + r1); System.out.println(ab = + r2); 图2.6 程序输出结果2.3.5 赋值运算符赋值运算符 赋值运算符分为简单运算符和复杂运算符。简单运算符指“=”,而复杂运算符是指算术运算符、逻辑运算符、位运算符中的双目运算符后面再加上“=”。表2.4列出Java常用的赋值运算符及其等价表达式。表表2.4 赋值运算符及其等价表达式赋值运算符及其等价表达式运算符 含

17、义 示 例 等价表达式 += 加并赋值运算符 a += b a = a + b -= 减并赋值运算符 a= b a = a-b *= 乘并赋值运算符 a *= b a = a * b /= 除并赋值运算符 a /= b a = a / b %= 取模并赋值运算符 a %= b a = a % b &= 与并赋值运算符 a &= b a = a & b |= 或并赋值运算符 a |= b a = a | b = 或并赋值运算符 a = b a = a b = 左移并赋值运算符 a = b a = a = 右移并赋值运算符 a = b a = a b = 右移并赋值运算符 a = b a = a

18、b 2.3.6 其它操作符及其表达式其它操作符及其表达式 三目运算符(?:)相当于条件判断,表达式x?y:z用于判断x是否为真,如果为真,表达式的值为y,否则表达式的值为z。例如:int x = 5;int a = (x3)?5:3;则a的值为5。如果x = 2,则a的值为3。 对象运算符(instanceof)用来判断一个对象是否属于某个指定的类或其子类的实例,如果是,返回真(true),否则返回假(false)。 例如: boolean b = userObject instanceof Applet用来判断userObject类是否是Applet类的实例。2.3.7 优先级优先级表表2.

19、5 运算符优先级运算符优先级优先级 含义描述 运 算 符 结合性 1 分隔符 () ; , 2 单目运算、字符串运算 + - + - ! (类型转换符) *右到左 3 算术乘除运算 * / % 左到右 4 算术加减运算 + - 左到右 5 移位运算 左到右 6 大小关系运算、类运算 = instanceof 左到右 7 相等关系运算 = = ! = 左到右 8 按位与,非简洁与 & 左到右 9 按位异或运算 左到右 10 按位或,非简洁或 | 左到右 11 简洁与 & 左到右 12 简洁或 | 左到右 13 三目条件运算 ?: *右到左 14 简单、复杂赋值运算 = *= /= %= += =

20、 = = &= = |= *右到左 2.4 流流 程程 控控 制制 流程控制分为三种基本结构:顺序结构、分支结构和循环结构。顺序结构是指命令行顺序执行,这是最常见的一个格式;分支结构是一种选择结构,根据条件的值选择不同的执行流程,可以得到不同的结果。分支结构包括单分支语句(if-else语句)和多分支语句(switch语句);循环结构是指对于一些重复执行的语句,用户指定条件或次数,由机器自动识别执行。循环结构包括次数循环语句(for语句)和条件循环语句(while语句)。2.4.1 分支语句分支语句分支语句分为两类:单分支语句和多选语句。1. if-else语句语句if-else语句的基本格式

21、为:if(布尔表达式)语句或块1;else语句或块2; 其中: (1) 布尔表达式返回值为true或false。 (2) 如果为true,则执行语句或块1,执行完毕跳出if-else语句。 (3) 如果为false,则跳过语句或块1,然后执行else下的语句或块2。 【例2.7】测试if-else语句,如果x10,则输出x的值,并提示结果正确,否则输出x= 10,提示结果不正确。程序输出结果如图2.7所示。源程序代码如下:/程序文件名称为TestIf.javapublic class TestIf/声明全局变量xstatic int x;public static void main(Stri

22、ng args)x = 12;if(x10) System.out.println(x = + x + 结果正确);else System.out.println(x = 10 + 结果不正确);change();System.out.println(修改x的值之后);if(x10)System.out.println(x = + x + 结果正确);elseSystem.out.println(x = 10 + 结果不正确);/change方法:修改x的值public static void change()x = 5; 图2.7 程序输出结果2. switch语句switch语句的基本格式

23、为:switch(表达式1)case 表达式2: 语句或块2; break;case表达式3: 语句或块3; break;case 表达式4: 语句或块4; break;default: 语句或块5; break;其中:(1) 表达式1的值必须与整型兼容。(2) case分支要执行的程序语句。(3) 表达式2、3、4是可能出现的值。(4) 不同的case分支对应着不同的语句或块序列。 (5) break表示跳出这一分支。 【例2.8】测试switch语句,当x=1、2、3时,分别打印1、2、3,x不为这三个值时,打印x的值。程序输出结果如图2.8所示。源程序代码如下:/程序文件名称为TestS

24、witch.javapublic class TestSwitchpublic static void main(String args)/声明变量xint x;x = 12; System.out.println(x=12时打印的值);choose(x);x = 3;System.out.println(x=3时打印的值);choose(x);/choose方法:switch语句结构public static void choose(int x)switch(x) case 1:System.out.println(1);break;case 2:System.out.println(2);

25、break;case 3:System.out.println(3);break;default:System.out.println(x); 图2.8 程序输出结果 2.4.2 for循环语句循环语句for循环语句实现已知次数的循环,其基本格式为:for(初始化表达式;测试表达式;步长)语句或块; 其执行顺序如下: (1) 首先运行初始化表达式。 (2) 然后计算测试表达式,如果表达式为true,执行语句或块;如果表达式为false,退出for循环。 (3) 最后执行步长。 【例2.9】用for循环统计1100(包括100)之间数的总和。程序输出结果如图2.9所示。源程序代码如下:/程序文件

26、名称为TestFor.javapublic class TestForpublic static void main(String args) int sum = 0; for(int i = 1; i=100; i+)sum += i; System.out.println(1到100(包括100)的数的总和为: + sum);图2.9 程序输出结果2.4.3 while循环语句循环语句 while循环语句实现受条件控制的循环,其基本格式为: while(布尔表达式) 语句或块; 当布尔表达式为true时,执行语句或块,否则跳出while循环。上面for循环语句的例子改为while语句后如下

27、所示:int sum = 0;int i = 1;while (i=100)sum += i; i+;System.out.println(1到100(包括100)的数的总和为: + sum);2.4.4 do语句语句do语句实现受条件控制的循环,其基本格式为:do语句或块;while(布尔表达式) 先执行语句或块,然后再判断布尔表达式。与while语句不同,当布尔表达式一次都不为true时,while语句一开始判断就跳出循环,不执行语句或块,而在do语句中则要执行一次。上面那个例子改为do循环为: int sum = 0; int i = 1; do sum += i; i+; while

28、(i=100); System.out.println(1到100(包括100)的数的总和为: + sum);2.5 数数 组组 的的 使使 用用2.5.1 数组声明数组声明 数组的定义如下: (1) 首先是一个对象。 (2) 存放相同的数据类型,可以是原始数据类型或类类型。 (3) 所有的数组下标默认从0开始,而且访问时不可超出定义的上限,否则会产生越界错误。 数组声明时实际是创建一个引用,通过代表引用的这个名字来引用数组。数组声明格式如下: 数据类型 标识符 例如: int a;/声明一个数据类型为整型的数组a pencil b;/声明一个数据类型为pencil类的数组b2.5.2 创建数

29、组创建数组 由于数组是一个对象,所以可以使用关键字new来创建一个数组,例如:a = new int10;/创建存储10个整型数据的数组ab = new pencil20;/创建存储20个pencil类数据的数组b 数组创建时,每个元素都按它所存放数据类型的缺省值被初始化,如上面数组a的值被初始化为0,也可以进行显式初始化。在Java编程语言中,为了保证系统的安全,所有的变量在使用之前必须是初始化的,如果未初始化,编译时会提示出错。有两种初始化数组的方式,分别如下:(1) 创建数组后,对每个元素进行赋值。a0=5;a1=4;.a9 = 10;(2) 直接在声明的时候就说明其值,例如:int a

30、 = 4,5,1,3,4,20,2;说明了一个长度为7的一维数组。 【例2.10】编写程序测试数组,程序输出结果如图2.10所示。源程序代码如下:/程序文件名称为TestArray.javapublic class TestArraypublic static void main(String args)/声明数组int a;char b;/创建数组a = new int3;b = new char2;/数组初始化for (int i = 0; i3; i+)ai = i*3;b0 = a;b1 = b;/快速初始化数组int c = 0,1*3,2*3;/输出结果System.out.pri

31、nt(数组an);for (int i = 0; i2; i+)System.out.print(bi + );System.out.print(n数组cn);for (int i = 0; i3; i+)System.out.print(ci + ); 图2.10 程序输出结果习习 题题 1. 给出下列表达式的值。(1) 3+428 (2) abc&123|82*4&488/4+2 (4) 2*4&02|4%2 2. 编写程序,统计课程编号为1001、1002、2001和3001的平均成绩并输出。学生成绩表如图2.11所示。【每个课程编号的成绩用数组存储,读取时循环操作】图2.11 习题2.

32、2的成绩表 3. 根据上题得出的考生平均成绩进行判断,如果在90分以上,屏幕上输出“课程编号为XXXX的考生平均成绩为优”;在8090分之间输出“课程编号为XXXX的考生平均成绩为良”;在7080分之间输出“课程编号为XXXX的考生平均成绩为中”,在6070分之间输出“课程编号为XXXX的考生平均成绩为及格”;60分以下输出“课程编号为XXXX的考生平均成绩为不及格”。 4. 编写程序,用数组实现乘法小九九的存储和输出。【提示:采用多个一维数组。】第3章类和接口 3.1 类类 3.2 接口接口 3.3 常用数据结构及类常用数据结构及类 习习 题题 3.1 类类3.1.1 类的定义和声明类的定义

33、和声明 Java编程语言是面向对象的,处理的最小的完整单元为对象。而现实生活中具有共同特性的对象的抽象就称之为类。类由类声明和类体构成,类体又由变量和方法构成。下面给出一个例子来看一下类的构成。 【例3.1】自定义一个apple类,在主类SetApple中创建实例并调用方法,输出结果如图3.1所示。源程序代码如下:/程序文件名为SetApple.javapublic class SetApplepublic static void main(String args)apple a = new apple();/创建apple类a.appleweight = 0.5;/实例变量赋值System.

34、out.println(苹果的重量为1两);System.out.println(a.bite();/调用实例方法a.appleweight = 5;System.out.println(苹果的重量为5两);System.out.println(a.bite();/自定义类class apple/属性long applecolor;/对应苹果的颜色double appleweight;/苹果的重量boolean eatup;/是否吃完/类方法public boolean bite()if (appleweight5000)str = 名字: + name + Salary: + salary;

35、elsestr = 名字: + name + Salary: 低于5000;return str;class Employee public String name;/名字public int salary;/薪水public static String getSalary(String name, int salary) String str;str = 名字: + name + Salary: + salary;return str;public static String getSalary2(String name, int salary) String str;str = 名字: +

36、 name + Salary: + salary; return str; ; 程序中定义了父类Employee类,它有两个方法getSalary和getSalary2,方法体的实现都是一致的,都为输出名字和薪水的值。在TextExtend主类中覆盖了getSalary方法,方法体重新定义为薪水低于5000时并不输出薪水的值而是输出“低于5000”,用于和继承的getSalary2方法进行比较。由图3.2可以看出覆盖的方法按主程序中重定义的方法调用,而继承的方法直接调用父类中的方法。图3.2 测试单继承性程序的输出结果3.1.3 特殊变量特殊变量 类中有两个特殊变量super和this。 1.

37、 super 类声明中用关键字extends扩展了其超类之后,super用在扩展类中引用其超类中的成员变量。 【例3.3】使用super变量,输出结果如图3.3所示。源程序代码如下:/程序文件名为UseSuper.javapublic class UseSuperpublic static void main(String args)Manager m = new Manager(); = 王飞;m.salary = 10000;m.department = 业务部;System.out.println(m.getSalary();class Employee public Str

38、ing name;/名字 public int salary;/薪水/方法 public String getSalary() String str;str = 名字: + name + nSalary: + salary; return str; class Manager extends Employee public String department;/部门 /方法 public String getSalary() /使用super变量调用超类的方法 return super.getSalary() + nDepartment: + department; 图3.3 测试super变

39、量的输出 2. this this变量指向当前对象或实例。 str = 名字: + name + nSalary: + salary; 上例中的语句可以换成下面的语句。 str = 名字: + + nSalary: + this.salary; 这两者是等同的,因为在Java编程语言中,系统自动将this关键字与当前对象的变量相关联。但有一种情况例外,就是当在某些完全分离的类中调用一个方法并将当前对象的一个引用作为参数传递时。例如: Day d = new Day(this); 3.1.4 构造函数构造函数 类中的构造函数用来初始化一个类。构造函数为公有类型,无返回值,用来

40、从类实例中访问类时初始化此类的私有变量。 【例3.4】基于例3.3将公有变量改成私有变量之后,增加两个构造函数,访问通过外部调用构造函数实现初始化赋值,得到如图3.3所示的结果。/程序文件名为UseConstruct.javapublic class UseConstructpublic static void main(String args)Manager m = new Manager(王飞,10000,业务部);/初始化赋值System.out.println(m.getSalary(); class Employee private String name;/名字 private i

41、nt salary;/薪水 /构造函数 public Employee(String _name, int _salary) name = _name;salary = _salary; public String getSalary() String str;str = 名字: + name + nSalary: + salary; return str; class Manager extends Employee private String department;/构造函数public Manager(String _name, int _salary, String _departm

42、ent)super(_name,_salary);department = _department;public String getSalary() return super.getSalary() + nDepartment: + department;3.1.5 包包 计算机操作系统使用文件夹或者目录来存放相关或者同类的文档,在Java编程语言中,提供了一个包的概念来组织相关的类。包在物理上就是一个文件夹,逻辑上代表一个分类概念。 包就是指一组类。例如一个名叫Company的包,可以包含一组类,如Employee(雇员)、Manager(管理者)和Department(部门)等。声明包的

43、基本格式如下:Package 包名; 其中:Package为关键字,包名为标识符。 使用包时的注意事项如下: (1) Package语句要作为程序非注释语句的第一行语句。 (2) 包内的类名惟一。 (3) 引用包中的类时,使用import语句。import语句的基本格式为import 包名.类名,其中import为关键字,包名和类名之间用圆点(.)隔开。 【例3.5】编写程序测试包,先建立一个Company文件夹,然后建立名为Manager.java的类文件。源程序代码如下:/程序文件名为Manager.javapackage Company;/声明包名Companyclass Employe

44、e public String name;/名字 public int salary;/薪水 public String getSalary() String str;str = 名字: + name + nSalary: + salary; return str; public class Manager extends Employee public String department;/部门public String getSalary() return super.getSalary() + nDepartment: + department;对此文件进行编译,生成类文件Manager

45、.class。在原目录建立源程序文件UsePackage.java。源程序代码如下:/程序文件名UsePackage.javaimport Company.Manager;/引入包中的类public class UsePackagepublic static void main(String args)Manager m = new Manager(); = 王飞;m.salary = 10000;m.department = 业务部;System.out.println(m.getSalary(); 编译后,在命令提示符状态下运行,输出结果如图3.4所示。从图3.4中可以看出首先

46、进入Company目录,编译Manager.java文件,然后返回上层目录,编译UsePackage.java文件,最后执行UsePackage类文件,输出正确的结果。图3.4 测试包的输出结果3.2 接接 口口 Java编程语言中禁止多继承属性,但可以通过接口来帮助类扩展方法。接口中可以定义大量的常量和方法,但其中的方法只是一种声明,没有具体的实现,使用接口的类自己实现这些方法。接口与类的不同在于: (1) 没有变量的声明,但可以定义常量。 (2) 只有方法的声明,没有方法的实现。 接口声明的基本格式如下: public interface 接口名 extends 接口列表 【例3.6】测试

47、接口,定义接口文件Product.java,定义了两个常量,声明了一个方法。接口文件如下:/程序文件名Product.javapublic interface Productstatic final String MAKER = 计算机制造厂;static final String ADDRESS = 上海;public int getPrice();使用接口的源文件代码如下:/程序文件名UseInterface.javapublic class UseInterface public static void main(String args) Computer p = new Compute

48、r(); System.out.print(p.ADDRESS + p.MAKER); System.out.println( 计算机的价格: + p.getPrice()+ 万元); class Computer implements Productpublic int getPrice()return 1; 首先编译接口文件“javac Product.java”,然后编译使用这个接口的类文件“javac.UseInterface.java”,最后执行类“java UseInterface”,输出结果如图3.5所示。图3.5 测试接口的输出结果3.3 常用数据结构及类常用数据结构及类3.3

49、.1 Vector类类 Vector类似于一个数组,但与数组相比在使用上有以下两个优点。 (1) 使用的时候无需声明上限,随着元素的增加,Vector的长度会自动增加。 (2) Vector提供额外的方法来增加、删除元素,比数组操作高效。Vector类有三个构造函数,分别如下:public Vector();该方法创建一个空的Vector。 public Vector(int initialCapacity); 该方法创建一个初始长度为initialCapacity的Vector。 public Vector(int initialCapacity, int capacityIncrement

50、); 该方法创建一个初始长度为initialCapacity的Vector,当向量需要增长时,增加capacityIncrement个元素。(1) Vector类中添加、删除对象的方法如下:public void add(int index, Object element)在index位置添加对象element。public boolean add(Object o)在Vector的末尾添加对象o。public Object remove(int index)删除index位置的对象,后面的对象依次前提。(2) Vector类中访问、修改对象的方法如下:public Object get(in

51、t index)返回index位置对象。public Object set(int index, Object element)修改index位置的对象为element。(3) 其它方法:public String toString()将元素转换成字符串。public int size()返回对象的长度。 【例3.7】操作Vector对象,进行元素的添加、插入、修改和删除。程序输出结果如图3.6所示。源程序代码如下:/程序文件名为UseVector.javaimport java.util.Vector;/引入JDK的Vector类public class UseVectorpublic st

52、atic void main(String args)Vector vScore = new Vector();vScore.add( 86);/添加元素vScore.add( 98);/添加元素vScore.add(1, 99);/插入元素/输出结果for (int I = 0; I vScore.size(); I+) System.out.print(vScore.get(i) + );vScore.set(1, 77);/修改第二个元素vScore.remove(0); /删除第一个元素System.out.println(n修改并删除之后);for (int I = 0; I vSc

53、ore.size(); I+)System.out.print(vScore.get(i) + );System.out.println( n转换成字符串之后的输出n + vScore.toString(); ;图3.6 操作Vector对象的输出结果3.3.2 Hashtable类类 Hashtable类存储的是对象的名-值对。将对象的名和它的值相关联同时存储,并可以根据对象名来提取它的值。在Hashtable中,一个键名只能对应着一个键值,然而一个键值可以对应多个键名,键名必须是惟一的。构造函数以及常用方法如下:public Hashtable()构建散列表。public Hashtabl

54、e(int initialCapacity)构建长度为initialCapacity的散列表。public int size()返回散列表的名的个数。public Object remove(Object key)删除散列表中key名及其对应的value值。public Object put(Object key,Object value)将对象名key和对象值value存放到散列表中。public Object get(Object key)返回散列表key名对应的值。public String toString()转换成字符串。 【例3.8】操作Hashtable对象,进行添加、修改、删除

55、等操作,输出结果如图3.7所示。源程序代码如下:/程序文件名为UseHashtable.javaimport java.util.Hashtable;public class UseHashtablepublic static void main(String args) Hashtable hScore = new Hashtable(); hScore.put(张一,86);hScore.put(李二,98);hScore.put(海飞,99);System.out.println(转换成字符串之后的输出: + hScore.toString();hScore.put(李二,77);hSc

56、ore.remove(张一);System.out.println(修改并删除之后);System.out.println(转换成字符串之后的输出: + hScore.toString(); 图3.7 操作Hashtable对象的输出结果3.3.3 Enumeration接口接口 实现Enumeration接口的对象生成一系列元素,通过nextElement()方法依次读取下一个元素。只有以下两个方法: public boolean hasMoreElements() 测试是否还有元素。 public Object nextElement() 返回枚举的下一个元素。 Enumeration接口

57、及其方法通常与Vector、Hashtable一起连用,用来枚举Vector中的项和Hashtable中的键名,例如: for (Enumeration e = v.elements() ; e.hasMoreElements() ;) System.out.println(e.nextElement(); 【例3.9】使用Enumeration接口枚举Vector中的对象和Hashtable对象中的键名,并进行输出,结果如图3.8所示。源程序代码如下:/程序文件名UseEnumeration.javaimport java.util.*;public class UseEnumeration

58、 public static void main(String args) Vector vScore = new Vector();vScore.add(86);vScore.add(98); vScore.add(1,99);System.out.println(Vector: + vScore.toString(); for (Enumeration e = vScore.elements() ; e.hasMoreElements() ;)System.out.println(e.nextElement();Hashtable hScore = new Hashtable();hSco

59、re.put(张一,86);hScore.put(李二,98);hScore.put(海飞,99);System.out.println(Hashtable: + hScore.toString();for (Enumeration e = hScore.keys() ; e.hasMoreElements() ;)String str = (String)e.nextElement();System.out.print(str + :);System.out.println(hScore.get(str); 图3.8 使用Enumeration接口枚举输出3.3.4 Date类类Date类用

60、来指定日期和时间,其构造函数及常用方法如下:public Date()从当前时间构造日期时间对象。public String toString()转换成字符串。public long getTime()返回自新世纪以来的毫秒数,可以用于时间计算。 【例3.10】测试执行循环花费的时间(数量级为毫秒),具体时间情况如图3.9所示。源程序代码如下:/程序文件名为UseDate.javaimport java.util.Date;public class UseDatepublic static void main(String args) Date dOld = new Date(); long

温馨提示

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

最新文档

评论

0/150

提交评论