Java程序设计第1-4章练习题参考答案完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
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<x.length;i++)
{if(x[i]> max)
max =x[i];
}
System.out.println(max);
A) 125 B) 5 C) 21 D) 168
23.在下述Java语言语句中,错误
..的创建数组的方法是( D) 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<z?y:z)?x:(y<z?y:z)
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、java
B、javadoc
C、javac
D、cd
43、下列哪个类声明是正确的(D)
A)abstract final class Car{···}
B)abstract private ver(){···}
C)public private number;
D)publ ic 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<x.length;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合法的标识符(B)
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.下面哪个说法不正确( B)?
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平台无关性?
答:Java虚拟机是一套支持java语言运行的软件系统,是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java平台无关性是指一个应用程序能够运行于不同的操作系统平台
2.什么是接口?Java中定义接口有什么作用。
答:接口是一种数据类型,以抽象形式定义类型,是一组抽象方法、常量和内嵌类型的集合。
接口提供方法声明和方法实现相分离的机制,使多个类表现出共同的行为能力,接口中声明的抽象方法在实现接口的多个类中表现出多态性,具有实现多继承的能力。
3. 请写出在类的方法的定义之前,加上修饰字public、private的区别。
答: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
答:4,5,6静态成员方法体中不能访问实例成员
5.设char ch;,写出下列问题对应的表达式
(1)判断ch是一个十进制的数字字符
Ch>=’0’&&ch<=’9’
(2)判断ch是一个十六进制的数字字符
Ch>=’0’&&ch<=’9’&& Ch>=’a’&&ch<=’f’ && Ch>=’A’&&ch<=’F’
或Integer.parseInt(“”+ch,16)>=0&& Integer.parseInt(“”+ch,16)<=0xf (3)判断ch是一个大(小)写字母
Ch>=’A’&&ch<=’Z’
(4)将一个十进制的数字字符ch转换成对应的整数类型值Integer.parseInt(“”+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基本数据类型有哪些?引用数据类型有哪些?
答:Java基本数据类型有整型、实型、字符型、布尔,引用数据类型有数组、类、接口。
9.Java中标识符的定义规则是什么?
答:是以字母开头的字母数字序列,字母指大小写字母、下划线、美元符、也可以是unicode字符,如汉字,区分大小写,不能使用关键字,长度不受限制。
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+")=");
_k=a%b_________________;
__a=b________________;
__b=k________________;
}
System.out.println("gcd("+a+","+b+")="+a);
}
}
2、下面是判断一个年份是否是闰年的程序,请在空白处填上适当的语句。
public class LeapYear{
public static void main(String args[]){
int year=2008;
boolean
leap=__year%400==0||year%100!=0&&year%4==0_____________;
System.out.println(year+"is a leap year,"+leap);
}
}
3、方法int sigmaDigit(int n)的功能是求出十进制整数n的各位数字之和。
例如,n=1234,该方法的返回值是10。
static int sigmaDigit( int n )
{ int sum = 0, d;
while( n > 0 ){
d=n% 10;
_sum+=d;_______________
n/= 10;
}
___return sum________________
}
4、编写一个类Hello.java,用标准输出语句在屏幕上显示一个字符串“Hello!”,请在空白处填上适当的语句。
public class Hello
{
public static void main(String args[])
{
System.out.println("Hello!");
}
}
5、下面的声明了一个颜色类。
一种颜色由红、绿、蓝三元色值组成,称为RGB值。
一个int整数可表示一种颜色,结构为:最高字节全1,其后3个字节分别存储红、绿蓝单色值,单色值的范围是0~255。
例如,0xff00ff00表示绿色,RGB值为(0,255,0)。
请在空白处填上适当的语句。
public class Color //颜色类{ private int value; //颜色值public Color(_int red,int green,int blue_)
//用三元值构造一个颜色
{ value = 0xff000000 | ((red & 0xFF)<<16) | ((green & 0xFF)<<8) | blue & 0xFF;
}
public Color(int rgb) //用一个整数值构造一个颜色
{
value = _0xff000000||rgb;//将整数rgb的最高字节全置1 }
public int getRGB()
{ return value;
}
public int getRed()
{ return (__getRGB()>>16___) & 0xFF;
}
public int getGreen()
{ return (__getRGB()>>8__) & 0xFF;
}
public int getBlue()
{
return getRGB() & 0xFF;
}
}
6、Fibonacci序列是F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N)用一维数组保存Fibonacci序列前25项的值,请在空白处填上适当的语句。
public class Fib_array
{
public static void main(String args[])
{
int n=25,i;
__int fib[]=new int[n];______
fib[0]=0;
fib[1]=1;
for (i=2; i<n; i++)
__fib[i]=fib[i-1]+fib[i-2]_ ___
for(i=0;i<n;i++) ___
System.out.print(fib[i]+" ");
System.out.println();
}
}
7、阅读以下程序,给出输出结果。
import java.io.*;
class Con_Str
{
String s1;
String s2;
Con_Str( String str1 , String str2 )
{ s1 = str1; s2 = str2; }
public String connectstring( )
{ return s1+s2;}
}
public class Exam_main
{ public static void main(String args[ ])
{ Con_Str s = new Con_Str( “hello ","world");
System.out.println(s.connectstring( ));
}
}
输出结果为:hello world______
8、以下程序的输出结果为_m = 10______。
public class AppTest {
public static void main(String args[]) { int i = 10, j = 5;
int m = i > j ? i : j;
System.out.println("m = " + m);
}
}
9、以下程序的输出结果为_9 7 5 3 1______。
public class WhileTest {
public static void main(String args[]) {
int i = 10;
while (i-- > 0) {
if (i % 2 == 0) {
continue;
}
System.out.print(i + " ");
}
}
}
10、以下程序的输出结果为
_黄牧(换行)
000001___。
class Person {
private String name;
public Person() {
this("陈敏");
}
public Person(String setName) {
name = setName;
}
public String getName() {
return name;
}
}
class Teacher extends Person {
private String id;
public Teacher(String s1, String s2) {
super(s1);
id = s2;
}
public String getId() {
return id;
}
}
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher("黄牧", "000001");
System.out.println(t.getName());
System.out.println(t.getId());
}
}
12、以下程序的输出结果为___A dog is running._____。
interface Runner {
public abstract void run();
}
class Dog
implements Runner {
public void run() {
System.out.println("A dog is running."); }
}
class Horse
implements Runner {
public void run() {
System.out.println("A horse is running."); }
}
public class Test {
public static void run(Runner r) {
r.run();
}
public static void main(String[] args) {
Runner horse = new Dog();
run(horse);
}
}
13、编程判断指定的字符串是否是合法的Java标识符?请在空白处填上适当的语句。
public class Identifier
{
public static boolean isIdentifier(String str)
{
if (str!=null && str.length()>0)
{
char ch = str.charAt(0);
if ( if(ch>='A'&&ch<='Z') )
{
for (int i=1; i<str.length(); i++)
{
ch = str.charAt(i);
if (!(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch=='_' || ch=='$' || ch>='0' && ch<='9'))
_____return false; ___
}
return true;_______________________________ }
}
return false;
}
public static void main(String args[])
{
String str = "_name1";
if (args.length>0)
str=args[0];
System.out.println("\""+str+"\"isIdentifier?"+isIdentifier(str)); }
14、可计算面积的接口与实现该接口的矩形类
interface Area //定义可计算面积接口
{
____public abstract double area()_______; //计算面积的抽象方法
}
public class Rectangle _implements Area____ //定义矩形类,实现接口Area
{
protected double length, width; //长度和宽度
public Rectangle(double length, double width)//构造方法
{
this.length = length;
this.width = width;
}
public double area() //计算矩形面积,实现Area接口中的抽象方法
{
return this.width * this.length;
}
public double perimeter() //计算矩形周长{
return (this.width+this.length)*2;
}
}
15、阅读下列程序,请写出该程序的输出结果。
class A{
int x,y;
A(int a,int b){
x=a;
y=b;
}
}
public class Test{
public static void main(String args[]) {
A p1,p2;
p2=new A(12,15);
p1=p2;
p2.x++;
System.out.println("p1.x="+p1.x);
}
}
程序的输出结果:_______p1.x=13_______
16、已有日期类MyDate在mypackage包中,Person类使用字符
串和MyDate对象作为成员变量,Student类继承Person类。
请在空白处填上适当的语句。
public class Person
{
private String name; //姓名
private MyDate birthday; //生日
public Person(String name, MyDate birthday) //构造方法
{
= name;
}
public Person( ____Person P___ )
//拷贝构造方法,重载,复制对象
{
this(, p.birthday);
}
......(略)
}
_class Student entends Person__ //声明Student类是Person类的子类{
private String speciality; //专业,子类增加的成员变量
public static void main(String args[])
{
Person p1 = new Person("李小明", new MyDate(1979,3,15));
Person p2 = _new Person(p1)_________________ ;
//拷贝构造方法,p2复制p1
Student s1 = new Person()_; //默认构造方法创建实例
... …(略)
}
}
17.方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。
例如,n=23765,该方法的返回值是7。
static int maxDigit(int n){
int c=0,d;
while(n>0){
d=_n%10______;
if(d>c) c=d;
n/=10;
}
_return c_______;
}
18.方法int sigmaEvenNum(int[]a)的功能是求已知数组中偶数的个数。
static int sigmaEvenNum(int []a){
int s =0;
for ( int i=0;_i<a.length_____;i++ ) {
if(__a[i]%2==0____) s++;
}
return s;
}
19.方法boolean isPrime(int n)的功能是判断正整数n(n>1)是否为质数。
static boolean isPrime(int n) {
int i;
if(n==2)return true;
if(n%2==0)return false;
for(i=3;i*i<=n;i+=2)
if(__n%i==0_______) break;
if(__i*i>n_______) return true;
return false;
}
20.阅读下列程序,请写出该程序的输出结果。
66
1111
public class Test33{
public static void main(String[]args){
int[][]a={{2,3},{1,6}}; int[][]b={{4,2},{3,5}}; int[][]c=new int[2][2]; int i,j;
for(i=0;i<a.length;i++)
for(j=0;j<a[i].length;j++){
c[i][i]=a[i][i]+b[i][i];
System.out.print(c[i][i]+"");
if(j==a[i].length-1) System.out.println();
}
}
}
21.阅读下列程序,请写出该程序的输出结果。
Parent's method2()
Parent's method1()
class Parent{
private void method 1 () { System.out.println(″Parent′s method 1()″);}
public void method 2 () { System.out.println(″Parent′s method 2()″);method 1();}
}
class Child extends Parent {
public void method l (){ System.out.println(″Child′s method 1 ()″);}
public static void main(String args[]){ Parent p = new Child();p.method2();}
}
22.阅读下列程序,请写出该程序的输出结果。
5 6 7 11 12
class Test33 {
static void s (int b[ ], int k) {
int i, j, t;
for(i = 1;i< k; i++) {
for(t = b[i], j = i-1; j >= 0 && t < b[j]; j--)
b[j+l] = b[j];
b[j+ 1 ] = t;
}
}
public static void main(String []args){
int i, a[] = {6, 12, 7, 11, 5 };
s(a, 5);
for(i = 0;i< a.length; i++) System.out.print(a[i]+" ");
System. out. Println();
}
}
五、程序设计题
1.编写方法int searchMaxNumIndex(int[]a),寻找已知数组中最大数的下标并返回。
int searchMaxNumIndex(int[]a){
int i,max=a[0],m=0;
for(i=1;i<a.length;i++)
{
if(max<a[i])
{max=a[i];m=i;}
}
return m;
2.编写一个日期类 Date ,要求:
(1) 日期类 Date 属性有:
year : int型,代表年
month : int型,代表月
day : int型,代表日
(2) 实现日期类 Date 中的4个方法:
MyDate( ) : 构造函数,日期的默认初值为 2000年1月1日MyDate( int y , int m , int d ) : 构造函数,形参 y 、m、d 分别为某个日期的年月日的初值。
String toString(): 返回某年某月某日的形式日期字符串
boolean equals(MyDate d) : 比较当前日期与d是否相等。
public class MyDate{
int year, month, day;
public MyDate(int y,int m,int d)
year = y;
month = m;
day = d;
}
public MyDate(){
t his(2000,1,1);
}
public String toString(){
return year+"年"+month+"月"+day+"日";
}
public boolean equals(MyDate d) {
return this==d || d!=null && year==d.year && month==d.month && day==d.day;
}
}
3.声明Point类表示一个点的x轴和y轴坐标,声明构造方法和拷贝
构造方法,声明若干get()和set()方法获得或设置坐标,声明moveto()方法将当前坐标移动到(x,y),声明move()方法将当前坐标移动若干位置。
部分程序代码已给出。
public class Point
{
public int x,y;
//完成构造方法
public Point(int x,int y)
{
this.x = x;
this.y = y;
}
public Point()
{
this(0,0);
}
//完成拷贝构造方法
public Point(Point p)
{
this(p.x, p.y);
}
public String toString()
{
return getClass().getName()+"("+this.x+","+this.y+")";
}
//完成若干get()和set()方法
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public Point getLocation()
{
return new Point(x, y);
}
public void setLocation(Point p)
{
setLocation(p.x, p.y);
}
public void setLocation(int x, int y)
{
move(x, y);
}
public void setLocation(double x, double y)
{
this.x = (int) Math.floor(x+0.5);
this.y = (int) Math.floor(y+0.5);
}
/完成moveto(),坐标移动到(x,y),改变当前对象位置
public void move(int x, int y)
{
this.x = x;
this.y = y;
}
//move(),x坐标移动dx,y坐标移动dy
public void move(int dx, int dy)
{
this.x += dx;
this.y += dy;
}
public boolean equals(Object obj)
{
if (this==obj)
return true;
if (obj instanceof Point)
{
Point p=(Point)obj;
return this.x==p.x && this.y==p.y;
}
return false;
}
public static void main(String args[])
{
System.out.println(new Point(10,20).toString());
}
}
4.请编写方法double averageOfArray(double[]a),返回非空数组
中正数的平均值(数组中可能有非正数元素)。
double averageOfArray(double[]a){
int i,count=0;double sum=0;
for(i=0;i<a.length;i++)
if(a[i]>0)
{ sum+=a[i];count++;}
return sum/count;
}
5.编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。
static int[] halfArray(int a[])
{
int x[]=new int[a.length],j;
for(j=0;j<a.length;j++)
x[j]=a[j]/2;
return x;
}
6.请编写方法int countNum(String str),该方法的功能是统计已知字符串str中数字的个数。
例如,countNum("A42B83C2D")的返回值是5。
int countNUM(String str)
{
int c=0,i;
for(i=0;i<str.length();i++)
if(str.charAt(i)>='0'&&str.charAt(i)<='9')
c++;
return c;
}。