8.下列修饰符中,定义类头时能使用的修饰符是C
A.privateB.staticC.abstractD.protected
9.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是B
A.x(intm){...}B.voidx(intm){...}
C.x(intm,intn){...}D.x(inth,intm,intn){...}
10.下列对封装性的描述中,错误的是D
A.封装体包含了属性和行为
B.封装使得抽象的数据类型提高了可重用性
C.被封装的某些信息在封装体外是不可见的
D.封装体中的属性和行为的访问权限是相同的
11.下列关于包的描述中,错误的是B
A.包是若干个类的集合B.包是一种特殊的类型
C.包是使用package语句创建的D.包有有名包和无名包两种
12.下列关于Applet程序的描述中,错误的是C
A.Applet程序的主类必须是Applet类得子类
B.Applet不是完整的独立程序
C.Applet程序的主类中应有一个main()方法
D.Applet的字节码文件必须嵌套在一个HTML文件中
13.下列界面元素中,不是容器的是C
A.DialogB.FrameC.ListD.Panel
14.下列关于异常处理的描述中,错误的是D
A.程序运行时异常由Java虚拟机自动进行处理
B.使用try-catch-finally语句捕获异常
C.使用throw语句抛出异常
D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理
15.以下方法不属于迭代器(Iterator)接口所定义的方法的是D
A.hasNext()B.next()C.remove()D.nextElement()
16.主线程属于(C)
A.守护线程B.Thread线程C.用户线程D.Runnable线程
二、填空题
1.三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。
2.在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用2字节内存空间,这样,无论是中文字符还是英文字符,都是占用2字节内存空间。
3.假设x=13,y=4,则表达式x%y!
=0的值是true,其数据类型是布尔型。
4.Java语言中,多态性主要表现在两个方面:
方法重载和成员覆盖。
5.定义类的关键字是class,定义接口的关键字是interface。
6.在Java语言中,通过类的定义只能实现单重继承,但通过接口的定义可以实现
多重继承关系。
7.在Java中字符串包括字符串常量和字符串变量,分别由类String和类StringBuffer来创建对象。
8.Java源程序文件编译后产生的文件称为·class文件,其扩展名为·java。
9.在多线程程序设计中,若要启动一个线程需要调用的函数是start。
10.在Java语言中,系统规定:
表示当前类的构造方法用this,表示直接父类的构造方法用super。
17.Java语言规定标识符是由字母、下划线、数字和美元符号组成的字符序列,长度不限;又规定第一个字符不能是数字,并区分字母的大小写。
18.Java中实现多线程一般使用两种方法,一是Thread,二是Runnable。
19.Java中变量有三要素:
类型、变量名和变量值。
20.Java语言中,说明或声明数组时内存大小,创建数组时内存大小。
21.集合框架提供的Map接口的实现类中,在Map中插入、删除和定位元素,使用HasMap是最好的选择;需要按顺序遍历键,需选择ThereMap。
22.Outputstream类和Inputstream类是所有字节流输入输出类的父类。
23.导入my.package包中的所类的命令是import。
24.构造方法是一种特殊的成员方法,构造方法名与类相同,并且此方法无有返回值。
25.图形用户界面的设计中有事件处理模型处理事件,在该模型中主要包括事件源、
事件对象和事件监听者。
三、判断题
1.Java语言具有较好的安全性和可移植性及与平台无关等特性。
T
2.Java语言的基本数据类型有4种:
整型、浮点型、字符型和布尔型。
T
3.组成JavaApplication的若干类中,有且仅有一个主类,只有主类中含有主方法main。
T
4.数据由高类型转换到低类型时候,采用强制转换,数据精度要受到损失。
T
5.子类所继承父类的成员都可以在子类中访问。
6.静态方法只能处理静态变量。
T
7.抽象方法是一种只有说明而无具体实现的方法。
8.Java语言规定在嵌套的程序块中不允许定义同名的成员变量。
9.Throwable类有两个子类:
Error类和Exception类。
前者由系统保留,后者供应用程序使用。
10.运行Applet程序是使用AppletViewer命令运行嵌入了字节码文件的html文件,从而获得运行结果。
11.成员方法的重载和覆盖是同一回事。
12.集合Set是通过键-值对的方式来存储对象的。
13.Java语言是一种强类型语言,数据类型转换有两种:
隐含转换和强制转换。
14.Java语言中,数组在静态和动态赋值时都判越界。
15.Frame容器是有边框的容器,它也是一种独立窗口,只能作为最外层容器。
16.死锁的产生是因为多个线程间存在资源竞争。
1.组成JavaApplication的若干类中,有且仅有一个主类,只有主类中含有主方法main。
()
2.数据由高类型转换到低类型时候,采用强制转换,数据精度要受到损失。
()
3.成员方法的重载和覆盖是同一回事。
()
4.抽象方法是一种只有说明而无具体实现的方法。
()
5.Java2的事件处理方法是采用委托事件处理模型。
()
6.Throwable类有两个子类:
Error类和Exception类。
前者由系统保留,后者供应用程序使用。
()
7.运行Applet程序是使用AppletViewer命令运行嵌入了字节码文件的html文件,从而获得运行结果。
8.Java语言具有较好的安全性和可移植性及与平台无关等特性。
()
9.Java语言的基本数据类型有4种:
整型、浮点型、字符型和布尔型。
()
10.子类所继承父类的成员都可以在子类中访问。
()
11.Java语言规定在嵌套的程序块中不允许定义同名的成员变量。
()
12.Java语言采用16位颜色标准。
Java的调色板保证128色。
13.静态方法只能处理静态变量。
()
14.画布(Canvas)是一种可容纳多个组件的容器。
()
15.Java语言是一种强类型语言,数据类型转换有两种:
隐含转换和强制转换。
()
16.Java语言中,数组在静态和动态赋值时都判越界。
()
17.Frame容器是有边框的容器,它也是一种独立窗口,只能作为最外层容器。
()
18.集合Set是通过键-值对的方式来存储对象的。
19.异常处理是在编译时进行的。
()
20.死锁的产生是因为多个线程间存在资源竞争。
()
四、阅读下列程序,请写出程序的输出结果
1.
classB{
intb;
B(intx){
b=x;
System.out.println("b="+b);
}
}
classAextendsB{
inta;
A(intx,inty){
super(x);
a=y;
System.out.println("b="+b+",a="+a);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Aobj=newA(13,23);
}
}
答案
b=13
b=13,a=23
2.
publicclassTest1{
publicstaticvoidmain(String[]agrs){
ABs=newAB("Hello!
","IloveJAVA.");
System.out.println(s.toString());
}
}
classAB{
Strings1;
Strings2;
AB(Stringstr1,Stringstr2){
s1=str1;
s2=str2;
}
publicStringtoString(){
returns1+s2;
}
}
答案Hello!
IloveJAVA.
3.publicclassTest{
publicstaticvoidmain(String[]args){
int[][]num1=newint[2][3];
num1[0][0]=3;
num1[0][1]=9;
num1[0][2]=60;
num1[1][0]=78;
num1[1][1]=79;
for(inti=0;i<=1;i++){
for(intj=0;jSystem.out.print(num1[i][j]+"\t");
System.out.println();
}
}
}
答案
3960
78790
4.publicclassTest{
publicstaticvoidmain(String[]agrs){
inti,s=0;
inta[]={10,20,30,40,50,60,70,80,90};
for(i=0;iif(a[i]%3==0){
s+=a[i];
System.out.println("s="+s);
}
}
}
答案
s=30
s=90
s=180
5.publicclassTest3{
publicstaticvoidmain(String[]agrs){
Aa=newA
(2);Ab=newA(3);
System.out.println(a.isEqualTo(b));
}
}
classA{
privateintprivateVar;
publicA(int_privateVar){privateVar=_privateVar;}
booleanisEqualTo(AanotherA){
if(this.privateVar==anotherA.privateVar)returntrue;
elsereturnfalse;
}
}
答案
false
6.publicclassTest{
publicstaticvoidmain(String[]args){
int[][]num1=newint[2][3];
num1[0][0]=3;num1[0][1]=9;num1[0][2]=45;
num1[1][0]=78;num1[1][1]=79;
for(inti=0;i<=1;i++){
for(intj=0;jSystem.out.print(num1[i][j]+"\t");
System.out.println();
}
int[][]num2=newint[][]{{1,2,3},{7,8},{9}};
for(inti=0;ifor(intj=0;jSystem.out.print(num2[i][j]+"\t");
System.out.println();
}
}
}
答案
3945
78790
123
78
9
7.publicclassTest2{
publicstaticvoidmain(String[]agrs){
inti,s=0;
inta[]={1,2,3,4,5,6,7,8,9};
for(i=0;iif(a[i]%3==0){
s+=a[i];
System.out.println("s="+s);
}
}
}
答案
s=3
s=9
s=18
8.classB{
intb;
B(intx){
b=x;
System.out.println("b="+b);
}
}
classAextendsB{
inta;
A(intx,inty){
super(x);
a=y;
System.out.println("b="+b+",a="+a);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Aobj=newA(5,10);
}
}
答案
b=5
b=5,a=10
9.publicclassTest4{
publicstaticvoidmain(String[]agrs){
try{
method();
}catch(Exceptione){
System.out.println("A");
}finally{
System.out.println("B");
}
}
staticvoidmethod(){
try{
wrench();
System.out.println("C");
}catch(ArithmeticExceptione){
System.out.println("D");
}finally{
System.out.println("E");
}
System.out.println("F");
}
staticvoidwrench(){
thrownewNullPointerException();
}
}
答案
E
A
B
五、程序设计题
1.设计一个Calculator类,并完成下列的各方法的程序设计并测试:
(1)定义add()方法,用来计算两数(a,b)之和。
(2)定义sub()方法,用来计算两数(a,b)之差。
(3)定义mul()方法,用来计算两数(a,b)之积。
(4)定义div()方法,用来计算a/b。
publicclasskk{
inta,b;
intadd(){
return(a+b);
}
intsub(){
return(a-b);
}
intmul(){
return(a*b);
}
intdiv(){
if(b!
=0)
return(a/b);
else
return0;
}
publicstaticvoidmain(String[]args){
kkrect=newkk();
rect.a=10;
rect.b=6;
System.out.println("add="+rect.add());
System.out.println("sub="+rect.sub());
System.out.println("mul="+rect.mul());
System.out.println("div="+rect.div());
}
}
2.定义一个ArrayList集合对象,往其中添加随机产生的0-10之间的float类型数据,共添加10个,并打印输出该集合对象中每个元素的值。
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassTest{
publicstaticvoidmain(String[]args){
ArrayListlist=newArrayList();
for(inti=0;i<10;i++)
list.add(i,(float)Math.random()*10);
for(intj=0;jSystem.out.println(list.get(j));
Iteratorit=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
3.试利用dowhile循环,计算10!
。
publicclassSum{
publicstaticvoidmain(String[]args){
ints=1;
for(inti=1;i<=10;i++)
{
s*=i;
}
System.out.println(s);
}
}
其他问题:
1、用输入流读、并统计用户输入信息中的字母、数字
importjava.io.*;
publicclassTest11{
publicstaticvoidmain(String[]args)throwsIOException{
intnDig=0,nChar=0,nOther=0;
InputStreamReaderin=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(in);
System.out.println("请输入:
");
Stringstr=br.readLine();
for(inti=0;iif(str.charAt(i)>='0'&&str.charAt(i)<='9'){
nDig++;
}elseif(str.charAt(i)>='a'&&str.charAt(i)<='z'||str.charAt(i)>='A'&&str.charAt(i)<='Z'){
nChar++;
}else
nOther++;
}
System.out.println("字母:
"+nChar);
System.out.println("数字:
"+nDig);
System.out.println("其它字符:
"+nOther);
}
}
2、循环语句的使用