Java语言程序设计一自考题模拟11.docx
《Java语言程序设计一自考题模拟11.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计一自考题模拟11.docx(15页珍藏版)》请在冰豆网上搜索。
Java语言程序设计一自考题模拟11
Java语言程序设计
(一)自考题模拟11
(总分:
100.00,做题时间:
90分钟)
一、第Ⅰ部分选择题
单项选择题(总题数:
10,分数:
10.00)
1.下述字符组合不能作为Java程序标识符的是______
(分数:
1.00)
A.5x √
B.大x
C.y小
D.Aa12
解析:
[考点]Java标识符
[解析]标识符只能由字母(包括英文字母、下画线、美元符号、文字字符)和数字组成,且不能以数字开头,所以A不对。
2.下列字符组合不能作为Java整型常量的是______
(分数:
1.00)
A.0x3ABC
B.0x3ACB
C.5000
D.078 √
解析:
[考点]Java整型常量
[解析]Java整型常量有十进制、八进制和十六进制三种。
八进制数包括0到7,不包含数字8。
A、B是十六进制数,C是十进制数,都正确。
3.在下述字符串中,不属于Java语言关键字的是______
(分数:
1.00)
A.float
B.new
C.return
D.java √
解析:
[考点]Java关键字
[解析]“java”是普通字符串,不是Java的关键字。
4.下面不是Java特点的是______
(分数:
1.00)
A.动态性
B.面向对象
C.编辑型 √
D.多线程
解析:
[考点]Java语言的特点
[解析]Java语言的特点包括:
动态性、自动回收无用内存、面向对象、与平台无关、安全性、分布式计算和多线程。
5.以下程序执行之后,输出的结果是______
System.out.println(23%-4);
(分数:
1.00)
A.-1
B.-5
C.3 √
D.5
解析:
[考点]Java语言中%运算符
[解析]%为求余运算符,求余运算所得结果的符号和被除数的符号相同。
23/4商5余3,符号为-。
所以选C。
6.若有定义intx=3,y;则执行语句y=(x++)+(x++)+(x++);后y的值为______
(分数:
1.00)
A.9
B.12 √
C.15
D.18
解析:
[考点]数据运算——自增运算
[解析]x++运算,后缀形式,表示在引用变量x之后,才是x加1。
第一个括号中的x值为3,执行完++后加1,使得第二个括号中x值变成4,同理,到第三个括号执行前,x变为5,所以y=3+4+5=12。
7.下面程序,哪一句是有问题的______
classClass6
{
intx;
voidf()
{
intclass6=1;①
x=class6;②
}
voidg()
{
inty;③
y=class6+x;④
}
}
(分数:
1.00)
A.语句②
B.语句①
C.语句③ √
D.语句③
解析:
[考点]局部变量的作用范围
[解析]语句④引用的class6非法,因为class6是在f函数中定义的局部变量,它的作用范围只能在f函数中,出了f函数就失去了意义,不能在其他函数中使用。
8.在下述Java语言语句中,错误的创建数组的方法是______
(分数:
1.00)
A.intintArray[];intArray=newint[5];
B.intintArray[]=newint[5];
C.int[]intArray={1,2,3,4,5};
D.intintArray[5]={1,2,3,4,5}; √
解析:
[考点]Java语言中数组的声明
[解析]声明数组的时候不能指定大小。
9.以下是关于字符串运算的代码,执行该代码段的输出结果是______
Strings="abcdefgh",s1,s2;
s1=s.substring
(2);s2=s.substring(2,5);System.out.println(s1+s2);
(分数:
1.00)
A.abcdef
B.abcdefghdefgh
C.cdefgh
D.cdefghcdef √
解析:
[考点]字符串操作
[解析]substring方法用于取字符串的子串。
substring
(2)表示截取从第二个字符到最后一个(从第零个开始),substring(2,5)表示截取从第二个到第五个字符。
所以答案选D。
10.以下程序的输出结果是______
publicclassClass07
{
Class07()
{
System.out.println("0param");
}
Class07(intn)
{
System.out.println(n+"param");
}
publicstaticvoidmain(String[]args);
{
Class07x=newClass07(100);
}
}
(分数:
1.00)
A.100param √
B.程序不错,但没有信息输出
C.出错
D.0param
解析:
[考点]Java语言中的构造方法的调用
[解析]生成x对象时自动调用有参数构造方法,传参数后n=100,所以输出100param。
二、第Ⅱ部分非选择题
填空题(总题数:
10,分数:
20.00)
11.Java语言最初的应用对象是1。
(分数:
2.00)
解析:
消费型电子产品[考点]Java语言基础
[解析]Java语言最初的应用对象是消费型电子产品。
12.Java中所有程序都使用方法,应用程序以1方法开始。
(分数:
2.00)
解析:
main[考点]Java应用程序
[解析]java应用程序必须在一个类中定义一个main方法,该方法代表应用的入口。
13.一个JavaApplet不再需要main方法,但必须有一个类扩展了1类。
(分数:
2.00)
解析:
Applet[考点]Java小应用程序
[解析]一个小应用程序也由若干个类组成,其中必须有一个主类,它继承系统提供的Applet类,这个类是小应用程序的主类。
14.在JavaJDK的核心中,解释器所对应的可执行文件是1。
(分数:
2.00)
解析:
java.exe[考点]Java程序的开发过程
[解析]Java解释器java.exe用来解释执行Java类文件。
15.在Java语言中,长整型long在计算机内存中占1个字节。
(分数:
2.00)
解析:
8[考点]Java整数类型
[解析]Java长整型在内存占8个字节。
16.在Java语言中,逻辑左移位运算的运算符为1。
(分数:
2.00)
解析:
<<[考点]Java移位运算
[解析]<<左移运算。
17.Java语言的控制语句有3种类型,即条件语句、1和转移语句。
(分数:
2.00)
解析:
循环语句[考点]Java语言的控制语句
[解析]Java语言的控制语句分为:
条件语句(if...else,switch)、循环语句(for,while,do...while)和转移语句(break,continue)。
18.数组声明后,必须使用1运算符分配内存空间。
(分数:
2.00)
解析:
new[考点]Java数组声明
[解析]数组的声明,类似对象的创建,都是用new关键字。
19.可以使用String类的1方法判断一个字符串的前缀是否是字符串s。
(分数:
2.00)
解析:
publicbooleanstautsWith(Strings)[考点]Java字符串操作
[解析]startsWith用来判断字符串是否以s开头。
20.接口中的方法被默认的访问权限是1。
(分数:
2.00)
解析:
public[考点]Java接口
[解析]Java中接口默认都是public的。
三、简答题(总题数:
6,分数:
18.00)
21.请写出与数学计算式
等价的Java语言表达式。
(分数:
3.00)
__________________________________________________________________________________________
正确答案:
()
解析:
(a*x+(a+x)/(5.0*a))/8
22.怎样区分应用程序和小应用程序?
(分数:
3.00)
__________________________________________________________________________________________
正确答案:
()
解析:
一个Java应用程序必须有且只有一个类含有main方法,这个类称为应用程序的主类,其main方法必须被说明为publicstaticvoid。
一个JavaApplet小应用程序不再需要man方法,但必须有一个类扩展了Applet类,即它是Applet类的主类。
23.在一个循环中使用break和continue语句有什么不同的效果?
(分数:
3.00)
__________________________________________________________________________________________
正确答案:
()
解析:
在循环中使用break语句,将使循环终止,流程跳转到break语句所在循环外面的第一个语句继续执行;在循环中使用continue语句,将提前结束本次循环,流程跳转到continue语句所在循环的第一个语句继续执行。
24.什么是方法重载?
(分数:
3.00)
__________________________________________________________________________________________
正确答案:
()
解析:
方法重载是指,一个类中可以有多个方法具有相同的名字和类型,这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。
25.Java中如何定义和使用接口?
(分数:
3.00)
__________________________________________________________________________________________
正确答案:
()
解析:
使用关键字interface来定义一个接口,接口的定义和类的定义很相似,分为接口的声明和接口体。
一个类通过关键字implements声明自己使用一个或多个接口,如果使用多个接口,则用逗号隔开。
如果一个类使用某个接口,那么这个类必须实现该接口的所有方法。
26.简述在Java中使用this的情况。
(分数:
3.00)
__________________________________________________________________________________________
正确答案:
()
解析:
第一,通过this调用另一个构造方法,用法是this(参数列表),此法仅用在类的构造方法中,别的地方不能这么用。
第二,函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式。
在没有同名的情况下,可以直接用成员变量的名字,而不用this,当然用了也不算错。
第三,在函数中,需要引用该函所属类的当前对象时,直接用this。
四、程序填空题(总题数:
5,分数:
20.00)
27.以下程序输出50以内的所有素数。
publicclasstest1_1
{
Publicstaticvoidmain(Stringargs[])
{
inti,j;
for(j=2;j<=50;j++)
for(i=2;i<=j/2;i++)
{if
(1)break;}
if(i>2)
System.out.println(j+"是素数");
}
}
(分数:
4.00)
解析:
j%ij/2[考点]循环语句
[解析]素数指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
本题是求50以内的素数。
首先将某数折半成j,然后依次判断这个数能否被2到j整除。
如果能整除说明这个数不是素数,继续判断下一个数,否则是素数,打印输出。
28.方法func(intn)返回十进制整数n的位数。
1func(intn)
{
intc;
for(c=0;2;c++)n/=10;
returnc;
}
(分数:
4.00)
解析:
intn!
=0[考点]Java函数
[解析]该函数的返回值类型为整数,所以第一空填int;求十进制数n的位数,则可以通过循环每次对十取整,如果取整之后的数不等于0,说明它至少还有一位数(个位数),直到n变为0,此时的循环次数c就是n的位数。
29.子类Univer_Student继承父类Student,并调用父类的构造方法。
ClassStudent
{
intnumber;Stringname;
Student(intnumber,Stringname)
{this.number=number;this.name=name;
Systemout.println("Iam"+name+"Mynumberis"+number);}
}
classUniver_Student1Student
{
boolean婚否;
Univer_Student(intnumber,Stringname,booleanb)
{
2(number,name);
婚否=b;
System.out.pritnln("婚否="+婚否);
}
}
publicclasstest1_1
{
publicstaticvoidmain(Stringargs[])
{
Univer_Studentzhang=newUniver_Student(9901,"和小林",false);}
}
(分数:
4.00)
解析:
extendssuper[考点]Java类的继承
[解析]子类用关键字extends继承父类,并且可以用super调用父类的构造方法。
30.下面程序对长度为5的数组中的每个元素赋值,然后按逆序输出。
请在横线处填入适当内容,使程序能正确运行。
java.io.*;
publicclassArrayTest{
staticvoidmain(Stringargs[]){
inti;
inta[]=1;
for(i=0;i<5;i++)
a[i]=i;
for(2;i>=0;i--)
System.out.println("a["+i+"]="+a[i]);}
}
(分数:
4.00)
解析:
newint[5]i=a.length-1[考点]数组的创建和引用
[解析]创建数组就是为数组分配存储空间,需要指定数组长度。
数组创建后,数组名就标识用于存储数组元素的存储空间,本题数组的创建采用的是声明时创建。
逆序输出需要从数组的最后一个元素开始,它的下标是数组的长度减一。
31.以下程序的输出结果是:
true,23456。
publicclassClass31
{
publicstaticvoidmain(String[]args)
{
String.str1=newString("abc");
String.str2=newString("Abc")
booleanb;
b=str1.1//忽略大小写,比较字符串s1,s2是否相等
str1=newString("0123456789");
str2=str1.2;
System.out.println(*b+","+s2);
}
}
(分数:
4.00)
解析:
equalsIgnoreCase(str2)substring[考点]String类的操作
[解析]equalsIgnoreCase是忽略大小写来比较两个字符串的内容是否相同,equals不忽略大小写;substring取源字符串的子串。
五、程序分析题(总题数:
5,分数:
20.00)
32.阅读以下程序代码,程序打印输出的结果是什么?
publicclassClass32
{
publicstaticvoidmain(String[]args)
{
booleanx=false,y=true,z=true;
x=x&&y||z;
y=x||y&&z;
z=!
(x!
=y)||(y==z);
System.out.println(x+","+y+","+z)
}
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
true,true,true[考点]Java逻辑运算
[解析]&&(逻辑与),||(逻辑或),!
(逻辑否定)。
&&和||是双目运算符,!
是单目运算符。
对于&&,必须保证两个操作数都为tme,结果才为true,否则结果为false。
对于||,只要有一个操作数为true,结果就为true。
33.请给出下列程序的运行结果。
publicclassTest
{
publicstaticvoidmain()
{
inti=1,j=10;
do
{
if(i++>--j)
continue;
}
while(i<5);
System.out.println("i="+i+"j="+j);
}
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
i=5,j=6[考点]Java控制语句
[解析]do-while循环,当i=5时即跳出循环;同时还考查自增、自减操作以及continue对于循环的控制。
If条件首先判断i的值是否大于j减1之后的值,然后i的值加1,条件满足则跳出本次循环;判断i是否小于5,小于5的话继续执行if判断。
当i执行到等于4时,此时j等于6,条件仍不满足,判断完if之后i加1变为5,判断while条件,5不小于5,while循环结束,i=5,j=6。
34.写出下面程序的运行结果。
publicclassTestextendsTT
{
publicstaticvoidmain(Stringargs[])
{
Testt=newTest("Tom.");
}
publicTest(Strings)
{
super(s);
System.out.print("Howareyou?
");
}
publicTest()
{
this("IamJack.");
}
}
classTT
{
publicTT()
{
System.out.print("Hi!
");
}
publicTT(Strings)
{
this();
System.out.print("Iam"+s);
}
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
Hi!
IamTom.Howareyou?
[考点]Java类的继承以及构造方法的调用
[解析]程序的入口从Test的main方法开始,首先创建一个Test对象,此时会调用Test的有参数的构造方法,并将“Tom”传给s。
在Test的构造方法中又通过super调用了父类TT的有参数的构造方法TT(Strings)。
在这个方法中又通过this()调用了TT的无参数构造方法TT(),此时打印输出“Hii”,之后接着打印输出“IamTom.”,此时执行完父类TT的构造方法,重新返回super这个地方,接着向下执行输出“Howareyou?
”
35.阅读以下程序代码,程序打印输出的结果是什么?
publicclassClass35
{
publicstaticvoidmain(String[]args)
{
Strings1=newString("abcdefg"),s2="abcdefg";
System.out.prinln(s1==s2);
System.out.prinln(s1.equals(s2));
System.out.println(s1.endsWith(s2)==s1.startsWith(s2));
}
}
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
false,true,true[考点]String类API
[解析]==和equals的区别:
==是判断两个字符串对象是否是同一个对象,即两个对象的内存地址是否相同;equals是判断两个字符串的值是否相同。
题目中s2相当于一个值,而s1是指向这个值的引用,它代表的值和s2是一样的。
endsWith()和startsWith()是String类的两个方法,分别判断前一个字符串是否以后一个字符串结束或者开始,它们的返回类型为boolean类型。
s1和s2的值相等,所以这两个方法的返回值都是true,即相等。
注意区分字符串中的等号和普通类型的等号。
36.写出下面程序的运行结果。
publicstaticvoidmain(String[]args){
Stringstr="puclicclass,Childextends()Father[]implementsInters";
StringTokenizerstr2=newStringTokenizer(str,",()[]");
intn=str2.countTokens();
System.out.println("单词个数:
"+n+",如下所示:
");
while(str2.hasMoreTokens()){
System.out.printl