Java练习题.docx
《Java练习题.docx》由会员分享,可在线阅读,更多相关《Java练习题.docx(17页珍藏版)》请在冰豆网上搜索。
Java练习题
Java语言概述习题一
一、简答题
1.Java语言程序分为哪几种?
JavaApplication程序和JavaApplet程序的主要区别是什么?
2.JavaApplication程序在结构上有哪些特点?
如何编译、运行?
被编译后生成什么文件?
该文件机器可以直接识别吗?
如何执行?
二、选择题
1.下面关于JavaApplication程序结构特点描述中,错误的是(D)。
A.一个JavaApplication程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。
B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。
C.组成JavaApplication程序的多个类中,有且仅有一个主类。
D.一个.java文件中定义多个类时,允许其中声明多个public类。
2.编译Java程序后生成的面向JVM的字节码文件的扩展名是(B)。
A..javaB..classC..objD..exe
3.下面关于Java语言特点的描述中,错误的是(A)。
A.Java是纯面向对象编程语言,支持单继承和多继承。
B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。
C.Java支持多线程编程。
D.Java程序与平台无关、可移植性好。
4.下列标识符(名字)命名原则中,正确的是(C)。
A.类名的首字母小写B.接口名的首字母小写
C.常量全部大写D.变量名和方法名的首字母大写
5.下面哪些选项是正确的main方法说明?
(D)
A.voidmain()B.privatestaticvoidmain(Stringargs[])
C.publicmain(Stringargs[])D.publicstaticvoidmain(Stringargs[])
三、判断题
1.Java语言具有较好的安全性和可移植性及与平台无关等特性。
(√)
2.JavaApplication程序中,必有一个主方法main()。
(√)
3.Java程序中不区分大小写字母。
(×)
4.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。
(√)
5.System类中的println()方法分行显示信息,而print()方法不分行显示信息。
(√)
Java语言基础习题二
一、填空题
1.已知:
booleanb1=true,b2;则:
表达式!
b1&&b2||b2的值为(false)。
2.已知:
doublex=8.5,y=5.8;则:
表达式x++>y--值为(true)。
3.已知:
inta[]={2,4,6,8};则:
表达式(a[0]+=a[1])+++a[2]值为(13)。
4.在Java中,字符串和数组是作为(对象)出现的。
5.执行下列程序代码的输出结果是(10,11,11)。
inta=10;inti,j;i=++a;j=a--;
System.out.printf("%d,%d,%d",a,i,j);
6.执行完booleanx=false;booleany=true;booleanz=(x&&y)&&(!
y);intf=z==false?
1:
2;
这段代码后,z与f的值分别是(false)和
(1)。
二、选择题
1.下面哪些标识符在Java语言中是合法的?
(AB)
A.persons$B.TwoUsersC.*pointD.instanceofF.end-line
2.下列(D)是合法标识符。
A.2endB.-helloC.=ABD.整型变量
3.若定义有变量floatf1,f2=8.0F,则下列说法正确的是(B)。
A.变量f1,f2均被初始化为8.0B.变量f1没有被初始化,f2被初始化为8.0
C.变量f1,f2均未被初始化D.变量f2没有被初始化,f1被初始化为8.0
4.下列(B)是不能通过编译的语句。
A.doubled=545.0;B.chara1=“c”;C.inti=321;D.floatf1=45.0f;
5.下列循环语句的循环次数是(B)。
inti=5;
do{
System.out.println(i--);
i--;
}while(i!
=0);
A.5B.无限C.0D.1
6.下列关于数组的定义形式,哪些是错误的?
(ABC)
A.int[]c=newchar[10];B.int[][3]=newint[2][];
C.int[]a;a=newint;D.charb[];b=newchar[80];
7.执行String[]s=newString[10];语句后,哪些结论是正确的?
(BC)
A.s[0]为未定义B.s.length为10
C.s[9]为nullD.s[10]为""
8.下列关于Java语言的数组描述中,错误的是(D)。
A.数组的长度通常用length表示B.数组下标从0开始
C.数组元素是按顺序存放在内存的D.数组在赋初值和赋值时都不判界
9.下列说法正确的是(AC)。
A.表达式“1+2>3”的值是falseB.表达式“1+2||3”是非法的表达式
C.表达式“i+j=1”是非法的表达式D.表达式“1+2>3”的值是true
10.若Strings="hello";Stringt="hello";charc[]={'h','e','l','l','o'};则下列哪些表达式返回true?
(AB)
A.s.equals(t);B.t.equals(newString("hello"));
C.t.equals(c);D.s==t;
11.执行下面的代码段:
switch(m){case0:
System.out.println("case0");
case1:
System.out.println("case1");break;
case2:
default:
System.out.println("default");
}
下列m的哪些值将引起"default"的输出?
(CD)
A.0B.1C.2D.3
三、判断题
1.Stringstr="abcdefghi";charchr=str.charAt(9);(×)
2.char[]chrArray={'a','b','c','d','e','f','g'};charchr=chrArray[6];(√)
3.intintArray[]={0,2,4,6,8};intlength=intArray.length();(×)
4.Stringstr="abcedf";intlength=str.length;(×)
5.int[]intArray[60];(×)
6.char[]str="abcdefgh";(×)
7.说明或声明数组时不分配内存大小,创建数组时分配内存大小。
(√)
8.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。
(√)
四、分析题
1.分析下面的程序,写出运行结果。
publicclassExercises5_1{
Stringstr=newString("Hi!
");
char[]ch={'L','i','k','e'};
publicstaticvoidmain(Stringargs[]){
Exercises5_1ex=newExercises5_1();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+"");
System.out.print(ex.ch);
}
publicvoidchange(Stringstr,charch[]){
str="Howareyou";
ch[1]='u';
}
}
运行结果是:
(Hi!
Luke)
2.分析下面的程序,写出运行结果。
publicclassExercises5_2{
publicstaticvoidmain(String[]args){
intn=1,m,j,i;
for(i=3;i<=30;i+=2){
m=(int)Math.sqrt((double)i);
for(j=2;j<=m;j++)
if((i%j)==0)
break;
if(j>=m+1){
System.out.print(i+"");
if(n%5==0)
System.out.print("\n");
n++;
}
}
}
}
运行结果是:
()
3571113
17192329
五、改错题
1.找出下面代码的错误部分,说明错误类型及原因,并更正。
publicintm1(intnumber[20]){
number=newint[20];
for(inti=0;inumber[i]=number[i-1]+number[i+1];
returnnumber;
}
改正后程序:
publicint[]m1(intnumber[]){
//number=newint[20];
for(inti=1;inumber[i]=number[i-1]+number[i+1];
returnnumber;
}
2.找出下面代码的错误部分,说明错误类型及原因,并更正。
(1)intx=1;
while(x<=10);
{i++;}
改正后程序:
intx=1,i=0;
while(x<=10)
{
i++;
}
(2)switch(n){
case1:
system.out.println(""Thenameis1");
case2:
system.out.println(""Thenameis2");
break;
}
改正后程序:
intn=1;
switch(n){
case1:
System.out.println("Thenameis1");
break;
case2:
System.out.println("Thenameis2");
break;
}
六、简答题
1.在Java语言中,表示字符串常量和字符常量时应注意哪些问题?
2.什么是表达式语句?
什么是空语句?
什么是块语句?
可以把块语句视为一条语种吗?
3.if语句中,<条件表达式>一定是逻辑型表达式吗?
switch语句中,<语句序列>里一定有break语句吗?
4.while循环语句与do-while循环语句有何不同?
5.for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?
for-each语句的特点是什么?
6.在Java中怎样定义和使用一维数组、二维数组?
Java语言面向对象基础习题三
一、填空题
1.类是一组具有相同(属性)和(行为)的对象的抽象。
(实例)是由某个特定的类所描述的一个个具体的对象。
2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。
3.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。
4.Java使用固定于首行的(package)语句来创建包。
二、简答题
1.名词解释:
对象、类、实例、方法、属性、接口、封装、继承、多态性。
2.为什么要对类进行封装?
封装的原则是什么?
3.类的封装性、继承性和多态性各自的内涵是什么?
4.什么是对象?
什么是类?
二者有何关系?
5.Java中类定义的一般格式是什么?
定义类的修饰符有哪些?
各自的特点是什么?
6.Java中成员变量定义的一般格式是什么?
成员变量有哪些修饰符?
7.Java中成员方法定义的一般格式是什么?
成员方法有哪些修饰符?
8.简述构造方法的特点与作用。
9.Import语句和package语句的功能分别是什么?
三、选择题
1.下面关于封装性的描述中,错误的是(D)。
A.封装体包含属性和行为B.被封装的某些信息在外不可见
C.封装提高了可重用性D.封装体中的属性和行为的访问权限相同
2.下面哪些代码段是正确的Java源程序?
(BCD)
A.importjava.io.*;B.importjava.io.*;
packagetestpackage;classPerson{/*dosomething...*/}
publicclassTest{/*dosomething...*/}publicclassTest{/*dosomething.*/}
C.importjava.io.*;D.packagetestpackage;
importjava.awt.*;publicclassTest{/*dosomething...*/}publicclassTest{/*dosomething...*/}
四、判断题
1.类是一种类型,也是对象的模板。
(√)
2.类中说明的方法可以定义在类体外。
(×)
3.实例方法中不能引用类变量。
(×)
4.创建对象时系统将调用适当的构造方法给对象初始化。
(√)
5.class是定义类的惟一关键字。
(√)
五、改错题
1.下面的程序中有若干个语法错误,找出后请改正。
publicclassMyMainClass{
publicstaticvoidmain(){
TheOtherClassobj=newTheOtherClass("JohnSmith","Male","UK");
System.out.println(obj.name+''+obj.gender+''+obj.nationality);
}
System.out.println("Theendoftheprogram!
")
}
publicclassTheOtherClass{
privateStringname,gender,nationality;
publicTheOtherClass(Stringname,Stringgender,Stringnationality){
this.name=name;
this.gender=gender;
this.nationality=nationality;
}
}
改正后程序:
publicclassMyMainClass{
publicstaticvoidmain(Stringargs[]){
TheOtherClassobj=newTheOtherClass("JohnSmith","Male","UK");
System.out.println(obj.name+''+obj.gender+''+obj.nationality);
System.out.println("Theendoftheprogram!
");
}
}
classTheOtherClass{
publicStringname,gender,nationality;
publicTheOtherClass(Stringname,Stringgender,Stringnationality){
this.name=name;
this.gender=gender;
this.nationality=nationality;
}
}
Java语言面向对象高级程序设计习题四
一、填空题
1.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。
2.类成员的访问控制符有(public)、(protected)、(private)和默认四种。
3.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。
4.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。
5.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。
6.Java的多态性主要表现在(重载)和(覆盖)两个方面。
7.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。
8.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。
9.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。
10.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。
11.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。
二、简答题
1.什么是继承?
什么是父类?
什么是子类?
继承的特性可给面向对象编程带来什么好处?
2.如何创建一个类的子类?
3.什么是重载方法?
什么是覆盖方法?
它们的主要区别是什么?
4.什么是成员变量的继承?
什么是成员变量的覆盖?
5.简述接口定义的一般格式。
6.什么是接口?
如何定义接口?
接口与类有何区别?
7.一个类如何实现接口?
实现某接口的类是否一定要重载该接口中的所有抽象方法?
8.比较接口与抽象类的异同。
9.什么是抽象类?
什么是抽象方法?
各自有什么特点?
10.什么是最终类?
什么是最终变量?
什么是最终方法?
三、选择题
1.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是(B)。
A.默认B.protectedC.privateD.public
2.在类的修饰符中,规定只能被同一包类所使用的修饰符是(B)。
A.publicB.默认C.finalD.abstract
3.下列关于子类继承父类的成员描述中,错误的是(C)。
A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。
B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。
C.子类中继承父类中的所有成员都可以访问。
D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。
4.下列关于继承性的描述中,错误的是(C)。
A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员
C.Java支持单重继承和多重继承D.Java通过接口可使子类使用多个父类的成员
5.下列关于抽象类的描述中,错误的是(C)。
A.抽象类是用修饰符abstract说明的B.抽象类是不可以定义对象的
C.抽象类是不可以有构造方法的D.抽象类通常要有它的子类
6.设有如下类的定义:
publicclassparent{
intchange(){}
}
classChildextendsParent{}
则,下面哪些方法可加入Child类中?
(AB)
A.publicintchange(){}B.intchang(inti){}
C.privateintchange(){}D.abstractintchang(){}
7.下列关于构造方法的叙述中,错误的是(D)。
A.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明
C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承
8.下面关于接口的描述中,错误的是(A)。
A.一个类只允许继承一个接口B.定义接口使用的关键字是interface
C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现
D.接口实际上是由常量和抽象方法构成的特殊类
9.下列哪些方法与方法publicvoidadd(inta){}为合理的重载方法?
(ACD)
A.publicvoidadd(chara)B.publicintadd(inta)
C.publicvoidadd(inta,intb)D.publicvoidadd(floata)
10.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是(C)。
A.publicintMAX_LENGTH=100;B.finalpublicintMAX_LENGTH=100;
C.publicfinalintMAX_LENGTH=100;D.finalintMAX_LENGTH=100;
四、判断题
1.Java语言中,构造方法是不可以继承的。
(√)
2.抽象方法是一种只有说明而无具体实现的方法。
(√)
3.Java语言中,所创建的子类都应有一个父类。
(√)
4.一个类可以实现多个接口,接口可以实现“多重继承”。
(√)
5.使用构造方法只能给实例成员变量赋初值。
(√)
6.Java语言不允许同时继承一个类并实现一个接口。
(×)
五、分析题
1.分析下面的程序,写出运行结果。
publicclassExercises6_1extendsTT{
publicvoidmain(Stringargs[]){
Exercises6_1t=newExercises6_1("Tom");
}
publicExercises6_1(Stri