1、Java 语言程序设计(一)自考题模拟 11 及答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:10,分数:10.00)1.下述字符组合不能作为 Java 程序标识符的是_(分数:1.00)A.5xB.大 xC.y 小D.Aa122.下列字符组合不能作为 Java 整型常量的是_(分数:1.00)A.0x3ABCB.0x3ACBC.5000D.0783.在下述字符串中,不属于 Java 语言关键字的是_(分数:1.00)A.floatB.newC.returnD.java4.下面不是 Java 特点的是_(分数:1.00)A.动态性B.面向对象C.编辑型D.多线
2、程5.以下程序执行之后,输出的结果是_ System.out.println(23%-4);(分数:1.00)A.-1B.-5C.3D.56.若有定义 int x=3, y;则执行语句 y=(x+)+(x+)+(x+);后 y 的值为_(分数:1.00)A.9B.12C.15D.187.下面程序,哪一句是有问题的_ class Class6 int x; void f( ) int class 6=1; x= class 6; void g( ) int y; y=class6+x; (分数:1.00)A.语句B.语句C.语句D.语句8.在下述 Java 语言语句中,错误的创建数组的方法是_(
3、分数:1.00)A.int intArray ; intArray=new int5;B.int intArray =new int5;C.int intArray=1,2,3,4,5;D.int intArray5=1,2,3,4,5;9.以下是关于字符串运算的代码,执行该代码段的输出结果是_ String s=“abcdefgh“ ,s1,s2; s1=s.substring(2);s2=s.substring(2,5);System.out.println(s1+s2);(分数:1.00)A.abcdefB.abcdefghdefghC.cdefghD.cdefghcdef10.以下程序
4、的输出结果是_ public class Class07 Class07( ) System.out.println(“0param“); Class07(int n) System.out.println(n+“param“); public static void main(String args); Class07 x=new Class07(100); (分数:1.00)A.100paramB.程序不错,但没有信息输出C.出错D.0param二、第部分 非选择题(总题数:10,分数:20.00)11.Java 语言最初的应用对象是 1。 (分数:2.00)12.Java 中所有程序都使
5、用方法,应用程序以 1 方法开始。 (分数:2.00)13.一个 Java Applet 不再需要 main 方法,但必须有一个类扩展了 1 类。 (分数:2.00)14.在 Java JDK 的核心中,解释器所对应的可执行文件是 1。 (分数:2.00)15.在 Java 语言中,长整型 long 在计算机内存中占 1 个字节。 (分数:2.00)16.在 Java 语言中,逻辑左移位运算的运算符为 1。 (分数:2.00)17.Java 语言的控制语句有 3 种类型,即条件语句、 1 和转移语句。 (分数:2.00)18.数组声明后,必须使用 1 运算符分配内存空间。 (分数:2.00)1
6、9.可以使用 String 类的 1 方法判断一个字符串的前缀是否是字符串 s。 (分数:2.00)20.接口中的方法被默认的访问权限是 1。 (分数:2.00)三、简答题(总题数:6,分数:18.00)21.请写出与数学计算式 (分数:3.00)_22.怎样区分应用程序和小应用程序? (分数:3.00)_23.在一个循环中使用 break 和 continue 语句有什么不同的效果? (分数:3.00)_24.什么是方法重载? (分数:3.00)_25.Java 中如何定义和使用接口? (分数:3.00)_26.简述在 Java 中使用 this 的情况。 (分数:3.00)_四、程序填空题
7、(总题数:5,分数:20.00)27.以下程序输出 50 以内的所有素数。 public class test1_1 Public static void main(String args ) int i,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)28.方法 func(int n)返回十进制整数 n 的位数。 1func(int n) int c; for(c=0; 2;c+)n/=10; return c; (分数:4.00)29.子类 U
8、niver_Student 继承父类 Student,并调用父类的构造方法。 Class Student int number; String name; Student (int number,String name) this.number=number; this.name=name; Systemout.println(“I am“+name+“My number is“+number); class Univer_Student 1 Student boolean 婚否; Univer_Student(int number,String name,boolean b) 2 (numb
9、er,name); 婚否=b; System.out.pritnln(“婚否=“+婚否); public class test1_1 public static void main(String args ) Univer_Student zhang=new Univer_Student(9901,“和小林“,false); (分数:4.00)30.下面程序对长度为 5 的数组中的每个元素赋值,然后按逆序输出。请在横线处填入适当内容,使程序能正确运行。 java.io.*; public class ArrayTest static void main (String args ) int i
10、; int a = 1; for(i=0;i5;i+) ai=i; for( 2;i=0;i-) System.out.println(“a“+i+“=“+ai); (分数:4.00)31.以下程序的输出结果是:true,23456。 public class Class31 public static void main(String args) String.str1=new String(“abc“); String.str2=new String(“Abc“) boolean b; b=str1. 1/忽略大小写,比较字符串 s1,s2 是否相等 str1=new String(“01
11、23456789“); str2= str1. 2; System.out.println(*b+“,“+s2); (分数:4.00)五、程序分析题(总题数:5,分数:20.00)32.阅读以下程序代码,程序打印输出的结果是什么? public class Class32 public static void main(String args) boolean x=false,y= true,z= true; x= x y=x|y z=!(x!=y)|(y=z); System.out.println(x+“,“+y+“,“+z) (分数:4.00)_33.请给出下列程序的运行结果。 publ
12、ic class Test public static void main( ) int i=1,j=10; do if(i+-j) continue; while(i5); System.out.println(“i=“+i+“ j=“+j); (分数:4.00)_34.写出下面程序的运行结果 。 public class Test extends TT public static void main(String args ) Test t=new Test(“Tom. “); public Test(String s) super(s); System. out.print(“How a
13、re you?“); public Test( ) this(“I am Jack.“); class TT public TT( ) System.out.print(“Hi!“); public TT(String s) this( ); System.out.print(“I am“+s); (分数:4.00)_35.阅读以下程序代码,程序打印输出的结果是什么? public class Class35 public static void main(String args) String s1=new String(“abcdefg“),s2=“abcdefg“; System.out
14、.prinln(s1=s2); System.out.prinln(s1.equals(s2); System.out.println(s1.ends With(s2)=s1.starts With(s2); (分数:4.00)_36.写出下面程序的运行结果。 public static void main(String args) String str=“puclic class,Child extends( ) Father implements Inters“; StringTokenizer str2=new StringTokenizer(str,“ ,( ) “); int n=s
15、tr2. countTokens( ); System.out.println(“单词个数:“+n+“,如下所示:“); while(str2.hasMoreTokens( ) System.out.println(str2. nextToken( ); (分数:4.00)_六、程序设计题(总题数:2,分数:12.00)37.使用循环把 26 个小写英文字母按字典顺序存入一维数组,在不使用另外数组的情况下将其逆序存放,最后再根据处理后的字符数组创建一个字符串,输出此字符串。编程完成以上要求。 (分数:6.00)_38.设计一个动物接口,并设计相应的动作,例如跑、跳、走等。再设计一个狗类实现这个
16、动物接口,该狗类具有一些基本属性,例如名称、大小、体重等。编写测试类测试是否达到预定功能。要求使用自定义的包。 (分数:6.00)_Java 语言程序设计(一)自考题模拟 11 答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:10,分数:10.00)1.下述字符组合不能作为 Java 程序标识符的是_(分数:1.00)A.5x B.大 xC.y 小D.Aa12解析:考点 Java 标识符 解析 标识符只能由字母(包括英文字母、下画线、美元符号、文字字符)和数字组成,且不能以数字开头,所以 A 不对。2.下列字符组合不能作为 Java 整型常量的是_(分数:1.0
17、0)A.0x3ABCB.0x3ACBC.5000D.078 解析:考点 Java 整型常量 解析 Java 整型常量有十进制、八进制和十六进制三种。八进制数包括 0 到 7,不包含数字 8。A、B 是十六进制数,C 是十进制数,都正确。3.在下述字符串中,不属于 Java 语言关键字的是_(分数:1.00)A.floatB.newC.returnD.java 解析:考点 Java 关键字 解析 “java”是普通字符串,不是 Java 的关键字。4.下面不是 Java 特点的是_(分数:1.00)A.动态性B.面向对象C.编辑型 D.多线程解析:考点 Java 语言的特点 解析 Java 语言
18、的特点包括:动态性、自动回收无用内存、面向对象、与平台无关、安全性、分布式计算和多线程。5.以下程序执行之后,输出的结果是_ System.out.println(23%-4);(分数:1.00)A.-1B.-5C.3 D.5解析:考点 Java 语言中%运算符 解析 %为求余运算符,求余运算所得结果的符号和被除数的符号相同。23/4 商 5 余 3,符号为-。所以选 C。6.若有定义 int x=3, y;则执行语句 y=(x+)+(x+)+(x+);后 y 的值为_(分数:1.00)A.9B.12 C.15D.18解析:考点 数据运算自增运算 解析 x+运算,后缀形式,表示在引用变量 x
19、之后,才是 x 加 1。第一个括号中的 x 值为 3,执行完+后加 1,使得第二个括号中 x 值变成 4,同理,到第三个括号执行前,x 变为 5,所以 y=3+4+5=12。7.下面程序,哪一句是有问题的_ class Class6 int x; void f( ) int class 6=1; x= class 6; void g( ) int y; y=class6+x; (分数:1.00)A.语句B.语句C.语句 D.语句解析:考点 局部变量的作用范围 解析 语句引用的 class6 非法,因为 class6 是在 f 函数中定义的局部变量,它的作用范围只能在 f函数中,出了 f 函数就
20、失去了意义,不能在其他函数中使用。8.在下述 Java 语言语句中,错误的创建数组的方法是_(分数:1.00)A.int intArray ; intArray=new int5;B.int intArray =new int5;C.int intArray=1,2,3,4,5;D.int intArray5=1,2,3,4,5; 解析:考点 Java 语言中数组的声明 解析 声明数组的时候不能指定大小。9.以下是关于字符串运算的代码,执行该代码段的输出结果是_ String s=“abcdefgh“ ,s1,s2; s1=s.substring(2);s2=s.substring(2,5);
21、System.out.println(s1+s2);(分数:1.00)A.abcdefB.abcdefghdefghC.cdefghD.cdefghcdef 解析:考点 字符串操作 解析 substring 方法用于取字符串的子串。substring(2)表示截取从第二个字符到最后一个(从第零个开始),substring(2,5)表示截取从第二个到第五个字符。所以答案选 D。10.以下程序的输出结果是_ public class Class07 Class07( ) System.out.println(“0param“); Class07(int n) System.out.println(
22、n+“param“); public static void main(String args); Class07 x=new Class07(100); (分数:1.00)A.100param B.程序不错,但没有信息输出C.出错D.0param解析:考点 Java 语言中的构造方法的调用 解析 生成 x 对象时自动调用有参数构造方法,传参数后 n=100,所以输出 100param。二、第部分 非选择题(总题数:10,分数:20.00)11.Java 语言最初的应用对象是 1。 (分数:2.00)解析:消费型电子产品 考点 Java 语言基础 解析 Java 语言最初的应用对象是消费型电子
23、产品。12.Java 中所有程序都使用方法,应用程序以 1 方法开始。 (分数:2.00)解析:main 考点 Java 应用程序 解析 java 应用程序必须在一个类中定义一个 main 方法,该方法代表应用的入口。13.一个 Java Applet 不再需要 main 方法,但必须有一个类扩展了 1 类。 (分数:2.00)解析:Applet 考点 Java 小应用程序 解析 一个小应用程序也由若干个类组成,其中必须有一个主类,它继承系统提供的 Applet 类,这个类是小应用程序的主类。14.在 Java JDK 的核心中,解释器所对应的可执行文件是 1。 (分数:2.00)解析:jav
24、a.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 语言的控制语句分为
25、:条件语句(if.else, switch)、循环语句(for, while, do.while)和转移语句(break, continue)。18.数组声明后,必须使用 1 运算符分配内存空间。 (分数:2.00)解析:new 考点 Java 数组声明 解析 数组的声明,类似对象的创建,都是用 new 关键字。19.可以使用 String 类的 1 方法判断一个字符串的前缀是否是字符串 s。 (分数:2.00)解析:public boolean stautsWith(Strings) 考点 Java 字符串操作 解析 startsWith 用来判断字符串是否以 s 开头。20.接口中的方法被
26、默认的访问权限是 1。 (分数:2.00)解析:public 考点 Java 接口 解析 Java 中接口默认都是 public 的。三、简答题(总题数:6,分数:18.00)21.请写出与数学计算式 (分数:3.00)_正确答案:()解析:(a*x+(a+x)/(5.0*a)/822.怎样区分应用程序和小应用程序? (分数:3.00)_正确答案:()解析:一个 Java 应用程序必须有且只有一个类含有 main 方法,这个类称为应用程序的主类,其 main 方法必须被说明为 public static void。一个 Java Applet 小应用程序不再需要 man 方法,但必须有一个类扩
27、展了 Applet 类,即它是 Applet 类的主类。23.在一个循环中使用 break 和 continue 语句有什么不同的效果? (分数:3.00)_正确答案:()解析:在循环中使用 break 语句,将使循环终止,流程跳转到 break 语句所在循环外面的第一个语句继续执行;在循环中使用 continue 语句,将提前结束本次循环,流程跳转到 continue 语句所在循环的第一个语句继续执行。24.什么是方法重载? (分数:3.00)_正确答案:()解析:方法重载是指,一个类中可以有多个方法具有相同的名字和类型,这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。25.
28、Java 中如何定义和使用接口? (分数:3.00)_正确答案:()解析:使用关键字 interface 来定义一个接口,接口的定义和类的定义很相似,分为接口的声明和接口体。一个类通过关键字 implements 声明自己使用一个或多个接口,如果使用多个接口,则用逗号隔开。如果一个类使用某个接口,那么这个类必须实现该接口的所有方法。26.简述在 Java 中使用 this 的情况。 (分数:3.00)_正确答案:()解析:第一,通过 this 调用另一个构造方法,用法是 this(参数列表),此法仅用在类的构造方法中,别的地方不能这么用。第二,函数参数或者函数中的局部变量和成员变量同名的情况下
29、,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式。在没有同名的情况下,可以直接用成员变量的名字,而不用 this,当然用了也不算错。第三,在函数中,需要引用该函所属类的当前对象时,直接用 this。四、程序填空题(总题数:5,分数:20.00)27.以下程序输出 50 以内的所有素数。 public class test1_1 Public static void main(String args ) int i,j; for(j=2;j=50;j+) for(i=2;i=j/2;i+) if( 1) break; if(i 2) System.out.println
30、(j+“是素数“); (分数:4.00)解析:j%i j/2 考点 循环语句 解析 素数指在一个大于 1 的自然数中,除了 1 和此整数自身外,不能被其他自然数整除的数。本题是求 50 以内的素数。首先将某数折半成 j,然后依次判断这个数能否被 2 到 j 整除。如果能整除说明这个数不是素数,继续判断下一个数,否则是素数,打印输出。28.方法 func(int n)返回十进制整数 n 的位数。 1func(int n) int c; for(c=0; 2;c+)n/=10; return c; (分数:4.00)解析:int n!=0 考点 Java 函数 解析 该函数的返回值类型为整数,所以
31、第一空填 int;求十进制数 n 的位数,则可以通过循环每次对十取整,如果取整之后的数不等于 0,说明它至少还有一位数(个位数),直到 n 变为 0,此时的循环次数c 就是 n 的位数。29.子类 Univer_Student 继承父类 Student,并调用父类的构造方法。 Class Student int number; String name; Student (int number,String name) this.number=number; this.name=name; Systemout.println(“I am“+name+“My number is“+number);
32、 class Univer_Student 1 Student boolean 婚否; Univer_Student(int number,String name,boolean b) 2 (number,name); 婚否=b; System.out.pritnln(“婚否=“+婚否); public class test1_1 public static void main(String args ) Univer_Student zhang=new Univer_Student(9901,“和小林“,false); (分数:4.00)解析:extends super 考点 Java 类的
33、继承 解析 子类用关键字 extends 继承父类,并且可以用 super 调用父类的构造方法。30.下面程序对长度为 5 的数组中的每个元素赋值,然后按逆序输出。请在横线处填入适当内容,使程序能正确运行。 java.io.*; public class ArrayTest static void main (String args ) int i; int a = 1; for(i=0;i5;i+) ai=i; for( 2;i=0;i-) System.out.println(“a“+i+“=“+ai); (分数:4.00)解析:newint5 i=a.length-1 考点 数组的创建和
34、引用 解析 创建数组就是为数组分配存储空间,需要指定数组长度。数组创建后,数组名就标识用于存储数组元素的存储空间,本题数组的创建采用的是声明时创建。逆序输出需要从数组的最后一个元素开始,它的下标是数组的长度减一。31.以下程序的输出结果是:true,23456。 public class Class31 public static void main(String args) String.str1=new String(“abc“); String.str2=new String(“Abc“) boolean b; b=str1. 1/忽略大小写,比较字符串 s1,s2 是否相等 str1=
35、new String(“0123456789“); str2= str1. 2; System.out.println(*b+“,“+s2); (分数:4.00)解析:equalsIgnoreCase(str2) substring 考点 String 类的操作 解析 equalsIgnoreCase 是忽略大小写来比较两个字符串的内容是否相同,equals 不忽略大小写;substring 取源字符串的子串。五、程序分析题(总题数:5,分数:20.00)32.阅读以下程序代码,程序打印输出的结果是什么? public class Class32 public static void main
36、(String args) boolean x=false,y= true,z= true; x= x y=x|y z=!(x!=y)|(y=z); System.out.println(x+“,“+y+“,“+z) (分数:4.00)_正确答案:()解析:true,true,true 考点 Java 逻辑运算 解析 do if(i+-j) continue; while(i5); System.out.println(“i=“+i+“ j=“+j); (分数:4.00)_正确答案:()解析:i=5,j=6 考点 Java 控制语句 解析 do-while 循环,当 i=5 时即跳出循环;同时
37、还考查自增、自减操作以及 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.写出下面程序的运行结果 。 public class Test extends TT public static void main(String args ) Test t=new Te
38、st(“Tom. “); public Test(String s) super(s); System. out.print(“How are you?“); public Test( ) this(“I am Jack.“); class TT public TT( ) System.out.print(“Hi!“); public TT(String s) this( ); System.out.print(“I am“+s); (分数:4.00)_正确答案:()解析:Hi!I am Tom. How are you? 考点 Java 类的继承以及构造方法的调用 解析 程序的入口从 Tes
39、t 的 main 方法开始,首先创建一个 Test 对象,此时会调用 Test 的有参数的构造方法,并将“Tom”传给 s。在 Test 的构造方法中又通过 super 调用了父类 TT 的有参数的构造方法TT(String s)。在这个方法中又通过 this( )调用了 TT 的无参数构造方法 TT( ),此时打印输出“Hii”,之后接着打印输出“I am Tom.”,此时执行完父类 TT 的构造方法,重新返回 super 这个地方,接着向下执行输出“How are you?”35.阅读以下程序代码,程序打印输出的结果是什么? public class Class35 public stat
40、ic void main(String args) String s1=new String(“abcdefg“),s2=“abcdefg“; System.out.prinln(s1=s2); System.out.prinln(s1.equals(s2); System.out.println(s1.ends With(s2)=s1.starts With(s2); (分数:4.00)_正确答案:()解析:false,true,true 考点 String 类 API 解析 =和 equals 的区别:=是判断两个字符串对象是否是同一个对象,即两个对象的内存地址是否相同;equals 是判断两个字符串的值是否相同。题目中 s2 相当于一个值,而 s1 是指向这个值的引用,它代表的值和 s2 是一样的。endsWith( )和 startsWith( )是 String 类的两个方法,分别判断前一个字符串是否以后一个字符串结束或者开始,它们的返回类型为 boolean 类型。s1 和 s2 的值相等,所以这两个方法的返回值都是 true,即相等。注意区分字符串中的等号和普通类型的等号。36.写出下面程序的运行结果。 public static void main(String args) String str=“p