java程序设计第1-4章练习题参考答案 (1)
一、选择题
1.下面供选字符序列中,不属于
...Java语言关键字的是( A ) A.goto B.null C.false D.native
2.以下是关于Java语言关键字的叙述,其中正确的是( C )
A.关键字可以用来描述类的成员类型,但是不能描述普通变量
B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成
C.关键字不可以用作变量、方法、类或标号的标识符
D.break和main都是Java语言的关键字
3.下述字符组合不能作为Java程序标识符的是(D)
A.Aa12 B.X
C.y D.5x
4.在下述字符串中,不属于
...Java语言关键字的是( C )
A.float B.new
C.java D.return
5.下列字符组合不能作为Java整型常量的是( A )
A.078
B.0x3ACB
C.5000
D.0x3ABC
6.设有如下程序:
public class Test {
public static void main(String[] args) {
String foo=args[1];
String bar=args[2];
String baz=args[3];
System.out.println("baz= "+baz);
}
}
下述哪一行命令可以使得执行该程序的输出为baz= 2 ( C )
A) java Test 2222 B) java Test 1 2 3 4
C) java Test 4 2 4 2 D) java Test 4 3 2 1
7.在Java语言中,int类型数据的长度是( C )
A.1个字节
B.2个字节
C.4个字节
D.8个字节
8. 用Java虚拟机执行类名为Hello的应用程序的正确命令是( D )。
A) java Hello.class B) Hello.class C) java Hello.java D) java Hello
9.执行以下代码,输出结果是( B )
int x=5,y=7,u=9,v=6;
System.out.println(x>y ? x+2:u>v ? u-3:v+2);
A.8
B.6
C.7
D.true
10.下列修饰符中与访问控制无关的是(C)。
A) public B) protected C) final D) private
11.以下程序代码的输出结果是( A )
int x=73;System.out.println(x>>1);
A.36 B.36.5
C.37 D.true
12.应用程序的main方法中有以下语句,则输出的结果是(B)。String s="12345#67890#123#fgh";
int m=s.indexOf("#");
String s2=s.substring(m+1);
System.out.println(s2);
A) 12345 B) 67890#123#fgh C) 123 D) fgh 13.Java语言中,在类定义时用final关键字修饰,是指这个类( A ) A.不能被继承B.在子类的方法中不能被调用C.能被别的程序自由调用D.不能被子类的方法覆盖14.以下是关于字符串运算的代码,执行该代码段的输出结果是( B ) String s="0123456789″,sl,s2;
sl=s.substring(2);s2=s.substring(2,5);System.out.println(s1+s2);A.0122345 B.234567892345
C.012234 D.23456789234
15.参照以下Java代码,以下四个叙述中最确切的是(B)
class A{
int x; static int y;
void fac(String s){Syatem. out. println("字符串:"+s);}
}
A.x、y和s都是成员变量
B.x是实例变量、y是类变量、s是局部变量
C.x和y是实例变量、s是参数
D.x、y和s都是实例变量
16.关于对象成员占用内存的说法哪个正确?( B )
A) 同一个类的对象共用同一段内存
B) 同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
C) 对象的方法不占用内存
D) 以上都不对
17.关于方法main()的说法哪个正确?( C )
A) 方法main()只能放在公共类中
B) main()的头定义可以根据情况任意更改
C) 一个类中可以没有main()方法
D) 所有对象的创建都必须放在main()方法中
18.以下程序代码的输出结果是( B )
int x = 10;
while (x > 7)
{ System.out.print("*"); x--;}
A.**
B.***
C.*
D.****
19.设类U声明,及对象u和v的定义如下:
class U{
int x, int y;
U(int a, int b){x= a; y = b;}
void copy(U a){ x = a.x; y = a.y;}
}
U u = new U(1, 2), v = new U(2, 3);
在以下供选择的代码中,可能引起系统回收内存的是( B )
A.u.x=v.y;u.y=v.x;
B.u=v;
C.u.copy(v);
D.v.copy(u);
20.设有以下代码:
String s l="123";
String s2="123";
String s3=new String("123");
则表达式s1==s2和s1==s3的值分别是( C )
A.true,true
B.false,false
C.true,false
D.false,true
21.在以下供选择的概念中,不属于
...面向对象语言概念的是( B ) A.消息B.模块
C.继承D.多态性
22.应用程序的main方法中有以下语句,则执行后输出的结果是( D )。
int[] x={125,21,5,168,98};
int max=x[0];
for(int i=1;i {if(x[i]> max) max =x[i]; } System.out.println(max); A) 125 B) 5 C) 21 D) 168 23.在下述Java语言语句中,错误 ..的创建数组的方法是( A) A.int intArray [ ];intArray=new int[5]; B.int intArray [ ]=new int[5]; C.int [ ] intArray ={1,2,3,4,5}; D.int intArray [5]={1,2,3,4.5}; 24.应用程序的main方法中有以下语句,则输出的结果是(A)。String s1="0.5", s2="12"; double x=Double.parseDouble(s1); int y=Integer.parseInt(s2); System.out.println(x+y); A) 12.5 B) 0.512 C) “0.512”D) “12.5” 25.构造函数何时被调用?( B ) A) 类定义时B) 创建对象时 C) 使用对象的方法时D) 使用对象的属性时 26.关于继承的说法正确的是:(D) A) 子类将继承父类所有的属性和方法。 B) 子类只继承父类的方法,而不继承属性 C) 子类只继承父类public方法和属性 D) 子类将继承父类的非私有属性和方法。 27.关于接口哪个正确?( D) A) 一个类只能实现一个接口 B) 接口间不能有继承关系 C) 接口和抽象类是同一回事 D) 实现一个接口的非抽象类必须实现接口的所有方法 28.以下关于接口的叙述中,正确的是( D ) A.所有的接口都是公共接口,可被所有的类和接口使用 B.一个类通过使用关键字interface声明自己使用一个或多个接口 C.接口中所有的变量都默认为public abstract属性 D.接口体中不提供方法的实现 29.以下代码段的输出结果是( A ) String s="JavaWorld";System.out.print(s.indexOf("a",4)); A.-1 B.O C.1 D.4 30.Java语言中,只限子类或者同一包中的类的方法能访问的访问权限是( D) A.public B.private C.protected D.<无修饰> 31.设有数组定义int[][] x={{1,2},{3,4,5},{6},{}};,则x.length 的值为( B ) A.3 B.4 C.6 D.7 32.若需要定义一个类变量或类方法,应使用哪种修饰符?( A)A)static B)package C)private D)public 33.若有下面程序 for(int k=1;k<=5;k++) {if(k>4) break; System.out.print (k); } 请问最后的输出结果是(A ) A)1234 B)1 C)2 D)12345 34、在Java中负责对字节代码解释执行的是(B) A)垃圾回收器 B)虚拟机 C)编译器 D)多线程机制 35、java源程序编译生成的字节码文件不是直接运行在操作系统平台上的,而是在(B)上运行的。 A)网页 B)java虚拟机 C)java编译器 Djava编辑器 36、下面叙述正确的是(A) A)Java语言的标识符是区分大小写的 B)源文件名和public类名可以不相同 C)源文件名其扩展名为.jar D)源文件中其public类的数目不限 37、java语言是一种(D) A)机器语言 B)汇编语言 C)面向过程语言 D)面向对象语言 38、请问下面哪一个表达式是求x、y、z三个整型变量中的最大值的表达式(A) A)(x>y?x:y)>z?(x>y?x:y):z B)(x>y?x:y)>z ?x:z C)(x>y)&&(x>z) D)x>(y 39、下面属于合法标识符的是(A) A)_cat B)5file C)static D)abc-3 40、下列哪个选项不是Java语言的注释符号(D) A、// B、/* */ C、/** */ D、! 41、类Example定义如下: 1.public class Example{ 2.public float aMethod(float a,float b){ } 3. 4.} 将以下哪种方法插入行3是不合法的。(B) A、public float aMethod(float a,float b,float c){ } B、 public float aMethod(float c,float d){ } B、public int aMethod(int a,int b){ } C、private float aMethod(int a,int b,int c){ } 42、编译Java程序的命令是(C) A、A、java B、javadoc C、javac D、cd 43、下列哪个类声明是正确的(D) A)abstract final class Car{···} B)abstract private ver(){···} C)public private number; D)public abstract class Car{···} 44、下面那个不是Java中的关键字(C). A)abstract B)while C)name D)static 45、若在某一个类定义中定义有如下的方法:final void performDial( ); 该方法属于( D )。 A)本地方法 B)抽象方法 C)解态方法 D)最终方法 46、下面关于继承说法正确的是(B)。 A)子类只继承父类public方法和属性 B)子类继承父类的非私有属性和方法 C)子类只继承父类的方法而不继承属性 D)子类将继承父类的所有属性和方法 47、应用程序的main方法中有以下语句,则输出的结果是 (A)。int[] x={122,33,55,678,-987}; int max=x[0]; for(int i=1;i if(x[i]>max) max=x[i]; } System.out.println(max); A) 678 B) 122 C) -987 D) 33 48、以下代码段执行后的输出结果为(B) int x=3; int y=10; System.out.println(y%x); A)0 B)1 C)2 D)3 49、对于位运算^(“异或”运算),6^2的二进制结果为(B) A)0000 B)0100 C)1111 D)0110 50、下列哪个选项是Java的输出语句(A) A、System.out.println(); B、Out.system.print(); C、System.println.out(); D、print.system.out(); 51、执行完以下代码int [ ] x = new int[25];后,以下哪项说明是正确的(A) A)x[24]为0 B)x[24]未定义C)x[25]为0 D)x[0]为空 52、下列哪项不是Java合法的标识符(D) A、$wei B、123 C、F117 D、girl_boy 53、关于一个类中被private 修饰的私有成员变量,以下说法正确的是(C) A)可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类 B)可以被两种类访问和引用:该类本身、该类的所有子类 C)只能被该类自身所访问和修改 D)只能被同一个包中的类访问 54、下面定义数组的语句错误的是(D) A、String [ ] str; B、String str [ ]; C、char [ ] [ ] str; D、char str; 55、以下代码段将创建(C)个对象。 String str1="hello"; String str2="hello"; A)0 B)1 C)2 D)3 56、下列哪个选项是Java的主方法(C) A) public static main(String args[]) B) private static void main(String args[ ]) C) public static void main(String args[ ]) D) private static main(String [ ] args) 57、main方法是Java Application程序执行的入口点,关于main 方法的方法头以下哪项是合法的(B)? A)public static void main() B)public static void main( String args[] ) C)public static int main(String []arg ) D)public void main(String arg[] ) 58、下列类的继承哪个是正确的(A) A) class Apple extends Fruit B) class Apple C) class Apple Fruit D) apple extends Fruit 59、 Java Application源程序的主类是指包含有(A)方法的类。 A)main方法B)toString方法C)init方法 D)actionPerfromed方法 60、下列哪个选项不是正确的for语句的形式(C) A) for( ; ; ) B) for(int i=0; i<10; i++) C) for(int i=0, i<10, i++) D) for(int i=0; ; i++) 61、编译Java Applet 源程序文件产生的字节码文件的扩展名为 (B)。 A)java B)class C)html D)exe 62.下面哪个说法不正确( D)? A)如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字。 B)Java应用程序源文件中必须有且仅有一个public类。 C)如果某源文件包含package语句,则该语句必须是第一个非空、非注释行。 D)接口中的方法必定是抽象方法,但可以不用关键字abstract修饰。 二、填空题 1.Java源文件的扩展名是_java__。 2.Java的编译程序先将Java源程序翻译成与机器无关的字节码文件。3.Java程序的字节码文件的扩展名是_.class__。 4.一个应用程序必须在某个类中定义的方法是_main_。 5.一个小应用程序必须定义成一个_Applet类的子类_。 6.Java语言采用多种机制来保证可移植性,其中最主要的是_平台无关_。 7.import语句的格式是__import 包名.类名;。 8.程序包声明的格式是_package 包名;。 9.用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是_goal==10?"对了!":"错了!"。 10.构造一个Java表达式:y/x>5,并且x!=0。这个表达式是_ x!=0&&y/x>5_。 11.表达式-4>>l的十进制值是___-2______。 12.表达式¨23 & 18’’的值是___18___。 13.在定义成员变量时,用关键字__static__修饰的是类变量。14.如果类A某个成员变量的类型是类B,则类A和类B之间是_类A包含有类B_关系。 15.在类声明之前用_final_修饰,声明类是不能被再继承的类,即它不能再有子类。 16.在面向对象语言中,对象之间的交互通过_互相发送消息_实现。17.类是对一组相同对象的描述,类概括了同类对象的共有性质:_属性和方法。 18.当联编推迟至运行时间实现时,该联编过程称为_动态联编_。 19. 布尔类型数组元素的默认初值是__false_。 20.Java语言提供了两个用于处理字符串的类,它们是_StringBuffer和StringBuilder _。 21.设有字符串定义: String s="ABCDABCD"; 则表达式s.indexOf("B")的值是_1__。 22.设有两个字符串对象str1和str2,则表达式“strl==str2”的意义是判别字符串strl和str2_是否引用相同对象_。 23.设有数组a和b的定义如下: int[]a={1,2,3};int[]b={4,5,6} …… 执行以下代码“a=b;”,除了完成赋值操作之外,引起系统额外要做的工作是_回收内存_。 24.使用默认字节字符对应表,将字符串转化为字节数组的方法是_strInput.getBytes();_。 25.若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true 和_false 26、创建类的对象时,使用运算符__new_给对象分配内存空间。 27、一个__构造方法_是一个特殊的方法,用于初始化一个类的对象,它的名称必须与_类名_相同,并且方法定义前不能加任何的修饰符。 28、定义类的构造方法不能有 _返回值类型,其名称与类名相同。 29、、若有定义:float[] b={1.1f, 3.5f, 6.8f};,则 b.length()的值是__3_。 30、Java语言中关键字_float 表示单精度类型,__boolean__代表布尔类型。 31、定义一个长度为10的一维整型数组array的方法为int [ ]array=_new int[10];_。 32、安装完JDK后一般要设置的两个环境变量是__path__和_classpath__。 33. 如果定义了一个名称为persons、长度为100的数组,则其第一个元素表示为_persons[0]_,第36个元素表示为__persons[35]__。34、若有类定义: class classB extends classA{ … } 则类classA是类classB的__父类__。 35、接口中的成员只有_ 常量_和_抽象方法_。 36. Java语言中关键字_double表示双精度类型。 37、在类中使用关键字_this_指代当前对象。 38. 在Java的基本数据类型中,字符型采用_ unicode_编码方案,每个字符占用2字节内存空间。 39、关键字__package__用于自定义包。 40.一个类实现一个接口使用的关键字是__implements__。 41. 在子类中使用关键字_super_做前缀可调用被子类覆盖的父类中的方法。 42、书写一个语句完成以下要求:先将整型变量a的值加1,再把它加入到变量sum中。 sum=++a; 。 43. 关键字_ import__用于导入包中的类到程序中,供程序中使用。 44、设 x = 2 ,则表达式 ( x + + )/3 的值是 0 。 45.如果一个方法没有返回值,则该方法返回值类型为__void__。 46、在面向对象概念中,每个对象都是由_属性__和__方法__两个最 基本的部分组成的。 47、书写一个语句完成以下要求:若输入数据input是合法的秒数(在0到60之间),则赋给变量second,否则将-1赋给second。Second=(input>0&&input<60?input:-1) 48.Java程序的字节码文件的扩展名是_class__。 49.接口的访问权限是 public 或默认。 50.在类声明之前用__final__修饰,声明类是不能被再继承的类,即它不能再有子类。 51. 若有定义:int[] b={1, 3, 6};,则b.length()的值是__3__。52. Java的字符类型采用的是Unicode编码方案,每个Unicode码 占用__16_个比特位。 53.如果要使用其他包中的类,必须用 import 语句导入。 54.抽象方法方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终方法是不能被当前类的子类重新定义的方法。 55.Java 源文件中最多只能有_1__个公共类,其它类的个数不限。 三、简答题 1.什么是Java虚拟机?什么是Java平台无关性? 2.什么是接口?Java中定义接口有什么作用。 3. 请写出在类的方法的定义之前,加上修饰字public、private的区别。4.以下代码定义了一个类,请指出其中三条不合法的代码行(行号参见注释)。 class Test22{ //1 float u;static float v;//2 static void setUV(boolean f){ //3 u=fac1(f);//4 v=fac2(!f);} //5 static float facl(boolean f){return f?u:v;} //6 float fac2(boolean f){return f?v:u;} //7 } //8 5.设char ch;,写出下列问题对应的表达式 (1)判断ch是一个十进制的数字字符 (2)判断ch是一个十六进制的数字字符 (3)判断ch是一个大(小)写字母 (4)将一个十进制的数字字符ch转换成对应的整数类型值 6.请写出在面向对象系统中,类和对象的关系。 7.如果类Student是类Person的子类,类Undergraduate是类Student 的子类,请指出以下代码行中哪些是不合法的。 Person p1=new Student(); Person p2=new Undergraduate(); Student s1=new Person(); Student s2=new Undergraduate(); Undergraduate ug1=new Person(); Undergraduate ug2=new Student(); Object ob=new Student(); 8.Java基本数据类型有哪些?引用数据类型有哪些? 9.Java中标识符的定义规则是什么? 10.面向对象技术有哪些核心特性。 四、程序填空题 1、下面是用辗转相除法求两个整数的最大公约数的程序,请在空白处填上适当的语句。 public class Gcd_dowhile { public static void main(String args[]) { int a=26460,b=12375,k=0; while(b!=0){ System.out.println("gcd("+a+","+b+")="); __________________; __________________; __________________; } System.out.println("gcd("+a+","+b+")="+a); } } 2、下面是判断一个年份是否是闰年的程序,请在空白处填上适当的语句。 public class LeapYear{ public static void main(String args[]){ int year=2008; boolean leap=______________________________________________; System.out.println(year+"is a leap year,"+leap); } }