047471604Java语言程序设计一.docx
《047471604Java语言程序设计一.docx》由会员分享,可在线阅读,更多相关《047471604Java语言程序设计一.docx(111页珍藏版)》请在冰豆网上搜索。
047471604Java语言程序设计一
4747Java语言程序设计
(一)
第一章Jave语言基础
1.1Java语言的特点
领会Java语言的特点、关键字
1010-11.Java语言采用多种机制来保证可移植性,其中最主要的是______。
虚拟机
1110-11.Java语言是一种____强类型语言___语言,它约束程序员必须遵守规定编写程序,能让编译器检测出程序中尽可能多的错误。
1.2Java应用程序和小应用程序
识记Java应用程序与小应用程序的特点和区别
11.一个应用程序必须在某个类中定义的方法是______。
main()
1201-11.能在浏览器上执行的Java程序被称为小应用程序。
1.3Java程序的开发过程
11.Java程序的字节码文件的扩展名是_________。
Class
1001-11.Java的编译程序先将Java源程序翻译成与机器无关的__________。
字节码
1101-11.Java源文件的扩展名是_____.java____。
1210-11.如果Java源文件中有多个类,那么只能有一个__public____类。
1404-11.类Testll经Java编译程序编译后,产生的文件是______。
Test11.class
1.4标识符和关键字
简单应用:
Java程序的标识符命名规则、注释、基本数据类型
标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:
1)标识符由Java字母和Java数字组成;
2)首字符必须是Java字母;
3)除去关键字、false、true和null;
4)所有标识符是区分大小写的。
注释:
1)行注释//
2)块注释/*….*/
3)文档注释/**…*/
1404-1.以下标识符中,不是Java语言关键字的是
A.waitB.newC.longD.switch
1.下述字符组合不能作为Java程序标识符的是( )
A.Aa12B.大xC.y小D.5x
1.下面供选字符序列中,不属于Java语言关键字的是()
A.gotoB.nullC.falseD.native
1.在下述字符串中,不属于Java语言关键字的是(C)
A.floatB.newC.javaD.return
1110-1.下面供选字符序列中,不属于Java语言关键字的是()
A.throwB.synchronizedC.protectD.try
1010-1.以下是关于Java语言关键字的叙述,其中正确的是()
A.关键字可以用来描述类的成员类型,但是不能描述普通变量
B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成
C.关键字不可以用作变量、方法、类或标号的标识符
D.break和main都是Java语言的关键字
0开头表8进制常量,数字只能(0-7)
1.5基本数据类型
1.下列字符组合不能作为Java整型常量的是()
A.078B.0x3ACBC.5000D.0x3ABC
1.在Java语言中,用于标记回车符的转义字符是
A.\bB./bC.\nD./n
1001-12.表达式¨23&18’’的值是__________。
2318
1101-1.在Java语言中,int类型数据的长度是()
A.1个字节B.2个字节C.4个字节D.8个字节
11.在Java语言中,双精度型变量在内存中占____8______个字节。
1101-l4.布尔类型数组元素的默认初值是____false_____。
第2章运算和语句
选择 填空 简答 程序填空
2.1数据运算
识记:
常用运算符的定义、包声明语句(package)和导入语句(import)
领会:
条件运算和其他运算
2.Java语言中数值数据的类型能自动转换,按照从左到右的转换次序为(B)
A.byte→int→short→long→float→double
B.byte→short→int→long→float→double
C.byte→short→int→float→long→double
D.short→byte→int→long→float→double
1404-2.以下数据类型转换中,必须进行强制类型转换的是
A.int→charB.short→longC.float→doubleD.byte→int
2.以下程序代码的输出的结果是( )
intx=53;System.out.println(1.0+x/2);
A.27.0B.27.5C.1.026D.1.026.5
1404-12.表达式“45&20”的十进制值是______。
4101100&010100
2.设有定义inti=6;,则执行语句“i+=i-1;’’后,i的值为
A.10B.11C.12D.13
1210-12.运算符‘‘<”、“*”和“&&”按优先级从高到低的顺序排列为__*<&&____。
21.请写出表示条件“x=2与y=3有且只有一个成立”的Java表达式”。
(x=2)!
=(y=3)或(x=2&&y!
=3)||(x!
=2&&y!
=3)
12.构造一个Java表达式:
y/x>5,并且x!
=0。
这个表达式是_________。
y/x>5&&x!
=0
1101-12.表达式-4>>l的十进制值是______-2___。
(解法:
-4/(2的一次幂))
21.请写出表示year年是闰年的Java表达式。
闰年的条件是:
每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。
(year%4==0)&&(year%4!
=0)||(year%400==0)简答
12.用条件运算符构造一个表达式:
goal等于10时,表达式的值为“对了!
”,否则,表达式的值为“错了!
”。
这个表达式是_________。
1010-2.执行以下代码,输出结果是()
intx=5,y=7,u=9,v=6;
System.out.println(x>y?
x+2:
u>v?
u-3:
v+2);
A.8B.6C.7D.true
2.以下程序代码的输出结果是()
intx=73;System.out.println(x>>1);
A.36B.36.5 c.37D.true
1110-2.以下程序代码的输出的结果是()
doublex=25.6;
System.out.println((int)x<<1);
A.48B.50C.51D.52
1201-2.表达式“-1>>>1”的十进制值是()
A.-2B.231-1C.-(231-1)D.232-1
12.在Java语言中,逻辑右移运算符为____>>>______。
2.2语句
简单应用:
阅读简单程序的功能和输出结果,编写简单的程序
综合应用:
Java语言语句的书写形式和语句的语义,算术运算符、自增自减运算符、关系运算符和逻辑运算符
1210-2.以下关于Java语句的说法正确的是
A.continue语句必须出现在多路按值选择结构或循环结构中
B.return语句可以出现在方法体的外面
C.编译系统会把单独的分号看成是空语句
D.break语句的作用是提早结束当前轮次循环
1001-21.请写出一段if语句,判断一个整数n是否为偶数。
如果是偶数,输出“Yes.”;否则,输出“No.”。
If(n%2==0){System.out.println(“Yes”);}else{System.out.println(“No”);}
1110-12.在Java语言中,package_____语句用于表示出现在该文件中的所有类都属于这个程序包。
1010-21.请使用for循环语句计算S=1+
的值。
doubles=0.0
for(inti=1;s<=10;i++)s+=1.0/I;
1404-21.已知变量n,请写出使用for语句计算
的代码。
1101-21.请写一个if语句,判断整数n是否同时满足“被3除余2,被7除余1”的条件,满足时输出“OK”,否则输出“NO”。
1110-21.请使用for循环语句实现计算
的值。
2.以下程序代码的输出结果是()
intx=10;
while(x>7)
{System.out.print("*");x--;}
A.**B.***C.*D.****
1101-2.在switch语句中,switch后面括号内的表达式的类型不能是()
A.byteB.longC.charD.int
1010-12.程序包声明的格式是______。
12.import语句的格式是______。
12、import包名.类名;
1201-21.请写出以下程序段的执行结果。
intc=0,d,n=3758;
while(n>0){if((d=n%l0)>c)c=d;n/=10;}
System.out.println("结果="+c);
执行结果:
结果=8
21.请写出下面程序段的执行结果。
intn=90;
intk=2;
System.out.print(n+″=〞);
while(k<=n){
if(k==n){System.out.println(n);break;}
elseif(n%k==0){System.out.print(k+″*″);n=n/k;)
elsek++;
}90=2*3*3*5
27.方法intmaxDigit(intn)的功能是找出十进制整数n各位中最大的一位数字。
例如,n=23765,该方法的返回值是7。
staticintmaxDigit(intn){
intc=0,d;
参考答案:
n%10
returnc
while(n>0){
d=_______;
if(d>c)c=d;
n/=10;
}
________;}
27.方法intsigmaDigit(intn)的功能是求出十进制整数n的各位数字之和。
例如,n=1234,该方法的返回值是10。
staticintsigmaDigit(intn)
{intsum=0,d;
while(n>0){
d=n%10;
_________;sum+=d
n/=10;
}
_________;returnsum
1010-27.方法booleanisPrime(intn)的功能是判断正整数n(n>1)是否为质数。
staticbooleanisPrime(intn){
inti;
if(n==2)returntrue;
if(n%2==0)returnfalse;
for(i=3;i*i<=n;i+=2)
if(_________)break;
if(_________)returntrue;
returnfalse;
}
1101-27.方法intnumberOfDigits(intn)的功能是计算十进制正整数n的位数。
intnumberOfDigits(intn){
intc=0:
do{n/=10;_________;
}while(_________);
returnc;
}
第3章面向对象编程基础
选择 填空 简答 分析程序运行结果
识记:
类的内存模型,final、abstract、super、this的用法,Applet程序结构和执行过程。
领会:
抽象、对象、消息、类、继承、封装、接口、多态等面向对象的基本概念。
简单应用:
访问权限的设置,Applet类的init()、strart()、stop()、destroy()、paint()、repaint()等方法。
综合应用:
类的声明、成员变量(实例变量、类变量)和方法(实例方法、类方法)、构造方法、方法重载,对象的声明、创建和使用,接口的声明和使用。
3.1面向对象的基本概念
13.在面向对象语言中,对象之间的交互通过______实现。
相互发送消息
1110-13.在Java程序系统中,对象之间的交互通过相互发送_____消息__实现
13.类是对一组相同对象的描述,类概括了同类对象的共有性质:
_________。
(P40)数据(属性)和方法(函数)
1404-3.以下供选择的概念中,属于面向对象语言重要概念和机制之一的是
A.函数调用B.模块C.继承D.结构化
1010-13.当联编推迟至运行时间实现时,该联编过程称为______。
动态联编
3.在以下供选择的概念中,不属于面向对象语言概念的是(B)
A.消息 B.模块 C.继承D.多态性
1101-22.请写出在面向对象系统中,类和对象的关系。
1110-3.在以下供选择的概念中,不属于面向对象语言概念的是()
A.类B.函数C.动态联编D.抽象
13.在Java语言中,通过扩展原有的类,声明新类的机制被称为___继承_____。
3.2Java的类和对象
22.请写出在类的方法的定义之前,加上修饰字public、private的区别。
Public修饰的方法为公用方法,任何类的方法都可以访问他
Private修饰的方法,本类内部可以访问
1010-3.Java语言中,只限子类或者同一包中的类的方法能访问的访问权限是()
A.public B.private C.protectedD.<无修饰>
1201-22.什么是方法重载,如何正确区分重载?
方法重载是指在一个类中定义多个有相同名字的方法。
区分方法:
根据这些方法或参数不同或者按顺序参数的类型不同来区分。
1101-13.在定义成员变量时,用关键字___static______修饰的是类变量。
3.参照以下Java代码,以下四个叙述中最确切的是( )
classA{intx;staticinty;
voidfac(Strings){Syatem.out.println("字符串:
"+s);}
}
A.x、y和s都是成员变量B.x是实例变量、y是类变量、s是局部变量
C.x和y是实例变量、s是参数D.x、y和s都是实例变量
1201-3.Java语言中,在类定义时用final关键字修饰,是指这个类()
A.子类必须实现父类未实现的方法B.没有具体实现代码
C.必须要有实例D.不能被继承
1210-3.不能被再继承的类是
A.final类B.abstract类C.public类D.用户自定义类
1404-13.如果类A继承和扩展类B,则子类A和超类B之间的关系是__isa____。
1201-12.如果子类A隐藏了超类B的成员变量x,而类A的某个方法f()要引用类B的x,则引用类B的x的引用代码可以写成super.x。
1201-14.设u和v是类A的两个对象,则逻辑表达式“u==v”的意义是引用相同的对象。
0901-32.阅读下列程序,请写出该程序的输出结果。
classA{
intx,y;
标识:
类的内存模型
A(inta,intb){
x=a;y=b;
}
}
publicclasssample{
publicstaticvoidmain(Stringargs[]){
Apl,p2;
p2=newA(12,15);
p1=p2;p2.x++;
System.out.println("p1.x="+p1.x);
}
}p1.x=13
3.设类U声明,及对象u和v的定义如下:
classU{
intx,inty;
理解引用和对象实体很重要
U(inta,intb){x=a;y=b;}
voidcopy(Ua){x=a.x;y=a.y;}
}
Uu=newU(1,2),v=newU(2,3);
在以下供选择的代码中,可能引起系统回收内存的是()
A.u.x=v.y;u.y=v.x;B.u=v;C.u.copy(v);D.v.copy(u);
1010-32.阅读下列程序,请写出该程序的输出结果。
考点:
实例变量和类变量
publicclassA{
intm=5;staticintn=3;
publicstaticvoidmain(String[]args){
Aobj1=newA();Aobj2=newA();
objl.m*=2;objl.n*=4;obj2.m+=1;obj2.n+=6;
System.out.println("obj1.m=''+obj1.m);
System.out.println("obj1.n="+obj1.n);
System.out.println("obj2.m="+obj2.m);
System.out.println("obj2.n="+obj2.n);
}
}
22.如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。
继承――父子类间的赋值兼容
Personp1=newStudent();
Personp2=newUndergraduate();
Students1=newPerson();
Students2=newUndergraduate();
Undergraduateug1=newPerson();
Undergraduateug2=newStudent();
Objectob=newStudent();
参考答案:
(P57)Students1=newPerson();
Undergraduateug1=newPerson();
Undergraduateug2=newStudent();
[解析]本题考核知识点是类之间的is-a关系。
在两个相关的类之间,可能会有is-a和has-a关系。
若类A是继承扩展类B,则子类A和超类B之间是is-a关系,即类A是一个类B。
这种情况下,A类对象一定可以是B类类型,因为B类的所有成员A类也有。
也就是子类对象可以是超类类型。
语句B
b=newA()是正确的,Aa=newB()是错误的。
1001-32.阅读下列程序,请写出该程序的输出结果。
classParent{
privatevoidmethod1(){System.out.println("Parent′smethod1()");}
publicvoidmethod2(){System.out.println("Parent′smethod2()");method1();}
}
classChildextendsParent{
publicvoidmethod1(){System.out.println("Child′smethod1()");}
publicstaticvoidmain(Stringargs[]){Parentp=newChild();p.method2();}
此处应注意Parent类的method1()是私有方法,不能被继承,若为public则是覆盖则结果为
Parent′smethod2()
Child′smethod1()
}
Parent′smethod2()
Parent′smethod1()
32.阅读下列程序,请写出该程序的输出结果。
考点:
多重继承子类对象的构造
classTree{
privateStringname;publicbooleanflower;
publicintbirthYear;
Tree(Stringn,booleanf,inty){name=n;flower=f;birthYear=y;}
publicvoidsetName(Stringn){name=n;}
publicStringgetName(){returnname;}
publicvoidprintTree(Stringstr){
System.out.println(str);System.out.println("Name:
"+name);
System.out.println("BirthYear:
"+birthYear);
System.out.println("Flower:
"+flower);
}
}
classPineTreeextendsTree{
publicbooleanconiferous=true;
PineTree(Stringn,booleanf,inty,booleanc){super(n,f,y);coniferous=c;}
publicvoidprintTree(Stringstr){
super,printTree(str);
System.out.println("Coniferous:
"+coniferous);
}
}
classTest32{
publicstaticvoidmain(String[]args){
TreefOb=newTree("MayFlower",true,1980);
PineTreesOb=newPineTree("Pine",false,2000,true);
fOb.printTree("fOb:
");sOb.printTree("sOb:
");
fOb:
Name:
MayFlower
BirthYear:
1980
Flower:
true(2分)
sOb:
Name:
Pine
BirthYear:
2000
Flower:
false
Coniferous:
true(2分)
}
}
3.以下关于抽象类及抽象方法的说法中,不正确的是
A.抽象方法只能出现在抽象类中B.抽象类必须有抽象方法
C.有抽象方法的类一定是抽象类D.抽象方法没有实现的代码
13.在类声明之前用_________修饰,声明类是不能被再继承的类,即它不能再有子类。
Final
3.Java语言中,在类定义时用final关键字修饰,是指这个类()
A.不能被继承B.在子类的方法中不能被调用
C.能被别的程序自由调用D.不能被子类的方法覆盖
1001-13.如果类A某个成员变量的类型是类B,则类A和类B之间是__________关系。
(P57)Has-a
3.3接口