Java语言程序设计二级考试上机指导扩充版.docx
《Java语言程序设计二级考试上机指导扩充版.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计二级考试上机指导扩充版.docx(119页珍藏版)》请在冰豆网上搜索。
![Java语言程序设计二级考试上机指导扩充版.docx](https://file1.bdocx.com/fileroot1/2023-2/25/ce8b70fc-3292-4b77-a8c0-bf3c0e7b26d5/ce8b70fc-3292-4b77-a8c0-bf3c0e7b26d51.gif)
Java语言程序设计二级考试上机指导扩充版
Java语言程序设计二级上机考试指导
Java语言程序设计上机考试主要是考核考生阅读程序、分析程序及亲自动手调试程序的能力,要求考生能够采用面向对象技术编写应用程序,在J2SDK环境下,熟练调试Java语言程序。
1、上机考试时间和题型
上机考试时间为90分钟,满分100分。
上机考试题型主要有改错题和填空题。
改错题主要是考核考生阅读应用程序的能力。
题型通常是要求考生按照题目要求将程序中的错误改正过来,使之输出正确的运行结果。
填空题主要是考核考生编写应用程序的能力。
题型通常是要求考生按照题目要求将程序补充完整,并调试程序使之输出正确的运行结果;或说明程序要实现的功能,相关方法内容空缺,让考生填上,调试通过并输出正确的运行结果。
2、使用J2SDK编写和调试Java程序
Java语言程序开发平台可用J2DSK,它是由SUN公司开发的一整套用于Java程序设计的平台工具。
J2SDK中包含有Java编译器、Java解释器、Java小程序查看器等。
一般使用J2sdk1.4.2版本,近年来Java语言版本的更新也比较快,1.5以上的版本也不断推出。
而ITAT上机考试则要求使用Eclipse3.3或MyEclipse7.0相关的集成环境。
要参加ITAT考试的考生考试前需要注意熟悉Eclipse3.3或MyEclipse7.0相关的集成环境。
Java有两类应用程序,基于命令提示符的JavaApplication程序和基于浏览器的JavaApplet程序。
前者是基于命令行提示符环境下的独立程序,后者是嵌入HTML文件在浏览器中解释执行的非独立程序。
下面将对它们分别进行归纳总结。
JavaApplication程序的编写和运行可以分为三个步骤。
(1)编写源代码
首先要选择一个无格式的文本编辑器,如Windows的记事本、UtraEdit等。
其次,要创建一个文件夹,用编辑器录入编写好的Java源程序,然后将录入的Java源程序存入该文件夹,其文件后缀应是.java。
(2)编译源代码
在安装好J2SDK系统后,还要对环境进行配置,关于具体配置请参阅《Java语言程序设计实训》(二版)的实验部分的实验2。
如果在考试中总是出现““Javac”不是内部和外部命令,也不是可运行程序和批处理文件。
”或“Error:
cannotread:
XXXXXX.java1error”。
也可以在查找到Java安装文件夹后进行如下设置:
假设Java安装文件路径是D:
\jdk1.6.0。
在命令提示符环境下,在D盘根目录下创建一个文件夹Java或指定的文件夹。
D:
\>cdJava
D:
Java\>pathD:
\jdk1.6.0\bin
D:
Java\>setclasspath=.
在调试程序时一定要将源程序存入D盘的Java文件夹中。
若是考试对文件夹有要求,就将用所以求的文件夹替代Java文件夹名。
例如。
在Java文件夹中有编辑好的Example1.java源程序文件,对其编译。
D:
\Java>javacExample1.java
如果命令提示符下没有错误提示信息,系统将迅速回到“D:
\Java>”状态下,表明程序编译已经通过,在“D:
\Java>”文件夹下将出现一个“Example1.class”文件。
如果有错误信息出现,要注意查看前面的错误,将其改正,再一次对其进行编译,如此反复,直到程序编译通过为止。
注意:
若是在编译时出现许多的错误,此时要冷静不要急躁,要按照上述要求从第一个错误改起,一步一步进行,一般都会得到解决。
(3)解释执行
编译通过也只能说完成程序调试的一半,还要解释执行、分析结果是否正确。
对于上述Exampl.java程序键入如下命令行:
D:
\Java>javaExample1
一般会有结果出现,此时需要仔细分析输出结果是否正确。
如果运行结果正确,程序的调试工作也就结束了。
注意:
有时程序有输出,但不是预期的结果。
此时要仔细分析源程序的解题算法、流程控制是否与预期相悖,要逐步改进程序代码,用可以预测的结果运行该程序,直到程序运行结果正确为止。
JavaApplet程序的编写和运行可以分为四个步骤。
(1)编写源程序
本步与JavaApplication程序相同。
编辑一个源代码文件存入指定的文件夹中。
注意:
除了图形界面的Application程序外,一般Applet程序不含main()方法。
(2)编译源程序
本步与JavaApplication程序相同。
(3)编写HTML文件,
一般用最简单的HTML文件结构即可。
例如有“AppletExample.java”JavaApplet程序,其HTML文件可以为:
以AppletExample1.html存盘即可。
(4)解释执行
对于Java Applet程序的解释执行方法有三种。
其一是用Java小程序查看器appletviewer解释执行。
以上述JavaApplet程序为例,其命令行如下:
D:
\Java>appletviewerAppletExample1.html
程序中无错误,将输出正确的运行结果;如果有错误信息,按照JavaApplication程序那样反复调试,直到调试通过,输出结果正确为止。
其二是用Web浏览器解释执行。
用浏览器打开AppletExample1.html文件,其中嵌入的Applet程序将被解释执行,若有错误,也要不断改错调试,直到调试通过,输出结果正确为止。
其三是直接双击html文件图标。
另外也可以使用appletviewer小程序查看器,而不用html文件,但是有如下要求:
将html文件中的“”语句以“/**/”形式放到Java源程序的包引入语句的后面。
在运行该Applet小程序时用如下命令行:
D:
\Java>appletviewerAppletExample1.java
3、上机考试的基本内容
Java语言程序设计设计考试的基本要求为:
(1)掌握Java语言中面向对象程序设计的特性
掌握面向对象方法是一种认知方法;面向对象程序设计语言的对象、消息、类、继承和多态性;对象的属性、对象的相互关系;面向对象程序设计语言的系统资源的可重用性、功能的可扩展性和系统的可管理性;面向对象系统的分析方法、面向对象系统的设计方法和面向对象系统的实现方法;J2SDK的的安装、J2SDK的设置、开发与运行Java程序的步骤等。
(2)数据类型、数组、运算符及其表达式
变量的数据类型、变量的名称和变量的作用域是变量的三大属性。
在一个变量被声明时,常常是指明它的数据类型和名称;而变量声明所在的物理位置往往决定了变量的作用域。
Java数据类型分为基本数据类型和复杂数据类型。
基本数据类型可分为数值类型、字符类型(char)和布尔类型(boolean)。
数值类型又分为整数类型(byte、short、int、long)和实数类型(float,double)。
复杂数据类型可分为类类型(class)、数组和接口类型(interface)等。
一维数组、多维数组、字符串和向量的声明、创建、引用及其应用举例。
Java语言有多达40余个运算符,其使用也很灵活。
表达式是操作数和运算符的结合体,它产生一个值。
操作数在表达式中是被运算的对象,它可以是简单变量,也可以是带有下标表达式的下标变量,即数组元素。
每个操作数所代表的值都具有一种数据类型,在运算的过程中,该类型可以一次性地转换为另一种数据类型。
(3)Java语言的基本语句
掌握java语言的三种基本结构:
Java语言的顺序结构语句、选择结构语句和循环结构语句以及转移控制语句。
(4)Java语言的接口、异常处理及包
接口是为了解决Java语言不支持多重继承而设立的,通过接口可以实现多重继承的需求。
程序运行中出现错误是不可避免的,能够处理运行中错误的程序才能稳定地运行,异常处理就是用来处理程序运行中可能出现错误的技术方法。
程序包是类和接口的集合。
利用程序包可以把常用的类或功能相似的类放在一个程序包中。
Java语言还提供了系统程序包,其中包含了大量的类,可以在编写Java程序时直接引用它们。
(5)Java语言的方法及基础类库的应用
掌握Java的return语句,Java方法的定义、返值和调用,Java方法之间的数据传递,Java方法的嵌套调用和递归调用以及Java语言的命令行参数。
掌握Object类,数据类型类,Math类、System类和Class类及其应用方法。
(6)Java语言类的声明、对象的实例化、继承性和多态性
掌握Java类的声明、类的成员变量、类的成员方法、内部类、匿名类和Java对象的实例化。
面向对象语言的继承性、多态性以及在一个类的内部,同名方法之间的关系;Java语言构造方法的缺省、继承与重载等问题。
(7)Java语言的数据流及其对象序列化
掌握Java数据流的输入/输出、Java输入/输出流类的层次结构、流类的常用方法、常用流类应用举例、File类、RandomAccessFile类及其举例和对象序列化。
(8)Java语言多线程的优先级设置、多线程的具体实现
掌握线程的基本概念,线程的生命期,Thread类创建线程、Runnable接口创建线程,线程的同步问题等。
(9)Java语言的AWT组件及用户图形界面编程
掌握Java语言的Frame框架、组件的布局管理、事件及其事件的处理、Java语言的其它容器、菜单和对话框等内容。
Java可视化编程中经常使用的标签、按钮和滚动条,单选按钮、复选框和选择框,文本框、文本区和列表框,Swing按钮和标签,Swing边界和滑动条,Swing单选按钮、复选按钮和列表框,GUI的文字输出、颜色控制、绘制图形、显示图像和画布的应用等内容。
(10)Java语言的网络编程及数据库编程
掌握、网络通信协议介绍、URL类及其应用、URLConnection类及其应用、Socket接口、Datagram数据报以及如何编写能在Internet环境上运行的Java应用程序和Applet程序的方法和技巧。
JDBC接口、驱动程序及ODBC,DriverManager类、Connection类、Statement类、ResultSet类,结构化查询语言SQL的数据定义语句、数据操纵语句,创建数据源、连接Access数据库、数据库创建、插入、修改和删除举例,数据库的顺序查询、单项查询
、排序查询和模糊查询等。
(11)常见数据结构的Java实现
在ITAT考试中,要求了解Java集合架构(JavaCollectionFramework),了解Collection接口、Map接口及其子接口,了解Set接口,学会使用HashSet和Treeset,了解List接口,学会使用ArrayList类、LinkedList类和Stack类,了解HashMap类和TreeMap类。
学会使用Collection类和Arrays类中的静态方法,还要求掌握用Java语言的一些类实现链表、栈、树集、树映射、散列集、散列表等应用。
4、模拟题目
(1)下面代码判断一年是否为闰年程序,改正程序中的错误,使之能够输出正确的结果。
[判断闰年的条件是:
年份能够被4整除,但不能被100整除;能够被400整除]
注意:
不能改动程序结构,不得增加行也不能删除行。
importjava.io.*;
publicclassOpExample01
{publicstaticvoidmain(Stringargs[])
{intyear=1989;
if((year%4==0)||(year%100!
=0)||(year%400==0))
System.out.println(year+"是闰年。
");
else
System.out.println(year+"不是闰年。
");
year=2000;
booleanleap;
if(year%4==0)
leap=false;
elseif(year%100!
=0)
leap=true;
elseif(year%400!
=0)
leap=false;
else
leap=true;
if(leap==true)
System.out.println(year+"是闰年。
");
else
System.out.println(year+"不是闰年。
");
year=2050;
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=true;
else
leap=false;
}
else
leap=false;
}
leap=false;
if(leap==true)
System.out.println(year+"是闰年。
");
else
System.out.println(year+"不是闰年。
");
}
}
(2)如下程序在编译时出现错误,请改正程序中的错误,使之能通过编译及运行。
importjava.io.*;
classSubClassextendsBaseClass
{}
classBaseClass
{
Stringstr;
publicBaseClass()
{System.out.println("Ok");}
publicBaseClass(Stringstr)
{this.str=str;}
}
publicclassOpExample02
{
publicstaticvoidmain(Stringargs[])
{
SubClassa=newSubClass("Hello");
BaseClassb=newBaseClass("world");
}
}
(3)下面程序的功能是为变量赋值,程序运行后,输出“i=34”。
请改正main()方法中的错误,使程序运行时能输出正确的结果。
importjava.io.*;
classA
{
privateinta;
publicvoidsetA(intx)
{a=x;}
publicintgetA()
{returna;}
}
publicclassOpExample03
{
publicstaticvoidmain(Stringargs[])
{
Aa=A();
a.getA(34);
inti=a.getA();
System.out.println("i="+i);
}
}
(4)在当前文件夹中生成一个名为File1.txt的文件,在D盘生成一个名为myDir的文件夹,并在该文件夹中生成一个名为File2.txt的文件,最后输出文件File2.txt的完整路径。
改正下列程序中的错误,使之能够正确运行。
importjava.io.*;
publicclassOpExample04
{
publicstaticvoidmain(Stringargs[])
{
FiledirObj=newFile(d:
\\myDir)
FilefileObj1=newFile("d:
\\myDir","File1.txt");
FilefileObj2=newFile("d:
/myDir","File2.txt");
System.out.println(fileDirObj2);
try
{
dirObj.mkdir();
}
catch(SecurityExceptione)
{}
try
{
fileDirObj1.createNewFile();
fileDirObj2.createNewFile();
}
catch(IOExceptione)
{}
}
}
(5)分析两个字符串,分别输出每个字符串的单词并统计出单词的个数。
阅读程序代码,填写空行位置的Java语句,使之能够正常编译运行。
importjava.util.*;
publicclassOpExample05
{
publicstaticvoidmain(Stringargs[])
{
Strings1="IamChinese,sheismyyoungerbrother";
Strings2="Hello,Really,verygood";
StringTokenizerfenxi01=newStringTokenizer(s1,",");
StringTokenizerfenxi02=newStringTokenizer(s2,",");
intn1=fenxi01.countTokens();
intn2=fenxi02.countTokens();
while(fenxi01.hasMoreTokens())
{
Strings=fenxi01.nextToken();
System.out.print(s+"");
}
System.out.println("\ns1有单词"+n1+"个。
");
while(fenxi02.hasMoreTokens())
{
Strings=;
System.out.print(s+"");
}
System.out.println("\ns2有单词"+n2+"个。
");
}
}
(6)下面是一个Applet程序,其功能是接收用户输入的两个整数,比较它们的大小,并在用户按下“比较”按钮后,将Applet中显示的“请先输入两个待比较的整数”改为“两个整数中比较大的数值:
x”,x是两个数中的比较大的值。
改正如下程序,使之能够通过编译并输出正确的结果。
importjava.awt.*;
importjava.awt.event.*;
importjava.applet.Applet;
/**/
publicclassOpExample06extendsAppletimplementsActionListener
{
Labelresult;
TextFieldfile1,file2;
Buttonbtn;
inta=0,b=0,max;
publicvoidinit()//初始化操作
{
result=newLabel("请先输入两个待比较的整数");
file1=newTextField(6);
file2=newTextField(6);
btn=newButton("比较");
add(file1);
add(file2);
add(btn);
add(result);
btn.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)//处理按钮事件
{
a=file1;
b=file2;
if(a>b)
max=a;
else
max=b;
btn.setText("两个数中比较大的值:
"+max);
}
}
(7)阅读如下程序,写出程序的运行结果。
importjava.io.*;
publicclassOpExample07
{
publicstaticvoidmain(Stringargs[])
{
Stringstr="Javaisgreat.";
Stringstr1=str.toString();
if(str==str1)
System.out.println("stristhesameasstr1");
else
System.out.println("strisnotthesameasstr1");
//至此,程序的输出为;
if(str.equals(str1))
System.out.println("strequalsstr1");
else
System.out.println("stridoesnotequalsstr1");
//至此,程序的输出为;
}
}
(8)下面程序是冒泡(从小到大)排序程序,请填写空行内容,使程序实现其功能。
importjava.io.*;
publicclassOpExample08
{publicstaticvoidmain(Stringargs[])
{
inti,j;
intarr[]={3,-66,11,88,-3,999};
intL=arr.length;
for(i=0;ifor(j=i+1;jif()
{
intt=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
for(i=0;iSystem.out.print(arr[i]+"");
}
}
(9)在下面的类中,有两个下拉列表,一个显示月份,一个显示(2000~2010)年份,填写空格,使程序正常运行,其用户界面如下所示。
importjavax.swing.*;
publicclassOpExample09extendsJFrame
{
JComboBoxmonthBox=newJComboBox();
;
publicOpExample09()
{super("组合框应用举例");//将"组合框应用举例"显示在标题栏上
setSize(350,70);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanelpane=newJPanel();
JLabelexp=newJLabel("组合框应用举例");
for(inti=0;i<13;i++)
monthBox.addItem(""+i);
for(inti=2000;i<2010;i++)
yearBox.addItem(""+i);
pane.add(exp);
pane.add(yearBox);
;
setContentPane(pane);
}
publicstaticvoidmain(Stringargs[])
{OpExample09