JAVA基础部分测试题及答案.docx
《JAVA基础部分测试题及答案.docx》由会员分享,可在线阅读,更多相关《JAVA基础部分测试题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
![JAVA基础部分测试题及答案.docx](https://file1.bdocx.com/fileroot1/2023-2/9/120afe75-ffd3-415e-a552-818c4981a40d/120afe75-ffd3-415e-a552-818c4981a40d1.gif)
JAVA基础部分测试题及答案
1.编译java程序的命令是[B];运行java程序的命令是[A];产生java文挡的命令是[D];产生类型归档文件.jar的命令是[F]。
A.java
B.javac
C.serialver
D.javadoc
E.policytool
F.jar
2.在一个java原文件中,import,class,package语句的顺序是[F]。
A.importclasspackage
B.classimportpackage
C.packageclassimport
D.importpackageclass
E.classpackageimport
F.packageimportclass
3.下面叙述正确的有[CDE]。
A.在一个java原文件中只能定义一个class
B.在一个java原文件中只能定义一个interface
C.在一个java原文件中可以定义多个class
D.在一个java原文件中可以定义多个interface
E.在一个java原文件中可以定义多个class和interface
F.在一个java原文件中只能定义publicclass
G.java原文件的前缀一定是所包含类型的名字
4.java程序中程序运行入口方法main的签名正确的有[AB]。
A.publicstaticvoidmain(Stringargs[])
B.staticpublicvoidmain(String[]args)
C.publicvoidstaticmain(String[]args)
D.publicvoidmain(Stringargs[])
5.java程序中程序入口方法main的参数代表命令行输入参数,命令行参数从[A]开始。
A.0
B.1
C.-1
6.以下属于正确的java注释有[ACD]。
A.//Thisiscomment
B./*Thisiscomment
C./**Thisiscomment*/
D./*Thisiscomment*/
7.以下能作为class,interface,method或variable有效标识符的有[ADF]。
A.For
B.boolean
C.23age
D._id
E.myname
F.$this_is_a_long_variable_name
8.以下不是java关键字的有[CD]。
A.super
B.this
C.NULL
D.true
9.以下能作为char类型的字面值的有[BD]。
A."e"
B.'f'
C.'\u12'
D.'\u0012'
10.byte变量的取值范围是[B]。
A.0-65535
B.-128–127
C.-256–255
D.0-32767
11.以下正确的有[AC]。
A.inti=32;
B.floatf=45.32;
C.doubled=3.2;
12.以下返回true的表达式有[AC]。
A."george"=="george"
B."george"="george"
C."george'.equals(newString("george"))
D."george"==newString("george")
13.根据以下程序选择正确答案[C]:
publicclassTest{
staticinttotal=10;
publicstaticvoidmain(Stringargs[]){
newTest();
}
publicTest(){
System.out.println("Intest");
System.out.println(this);
inttemp=this.total;
if(temp>5){
System.out.println(temp);
}
}
}
A.编译出错
B.运行时有异常
C.编译运行都正确
14.下面集合定义正确的有[BD]。
A.Stringstrs[]={'a''b''c'};
B.String[]strs={"a","b","c"};
C.String[]strs=newString{"a""b""c"};
D.Stringstrs[]=newString[]{"a","b","c"};
E.String[]strs=newString[3]{"a","b","c"};
15.以下switch表达语句正确的有[AC]。
A.publicvoidswitchTest(charc){switch(c){…}}
B.publicvoidswitchTest(longc){switch(c){…}}
C.publicvoidswitchTest(bytec){switch(c){…}}
D.publicvoidswitchTest(doublec){switch(c){…}}
16.在面向对象编程中,一个类型由[CDF]组成。
面向对象的特性包括[GIJ]。
在java中访问权限的限制由严格到宽松依次是[EHBA]。
A.public
B.protected
C.identifier
D.data
E.private
F.operations
G.inheritance
H.default(nomodifier)
I.encapsulation
J.polymorphism
17.以下方法声明正确的有[AD]。
A.publicstaticsynchronizedvoidwriteLog(Stringmsg)
B.synchronizedpublicstaticwriteLog(Stringmsg)
C.publicfinalabstractvoidwriteLog(Stringmsg)
D.finalpublicvoidwriteLog(Stringmsg)
E.abstractsynchronizedvoidwriteLog(Stringmsg)
18.Java方法的参数传递对于基本数据类型如int,byte等,参数传递是[C];对自定义数据类型,参数传递是[A]。
A.byreference
B.bypointer
C.byvalue
D.byaddress
19.如下程序:
publicclassArugmentTest{
staticclassIntA{
privateinta;
publicIntA(inta){this.a=a;}
publicintgetA(){returna;}
publicvoidsetA(inta){this.a=a;}
}
staticpublicvoidchange(inta){
a=3;
}
staticpublicvoidchange(IntAa){
a.setA(3);
}
staticpublicvoidchangeRef(IntAa){
a=newIntA(9);
}
publicstaticvoidmain(String[]args){
inta=2;
change(a);
System.out.print(a);
IntAia=newIntA(5);
change(ia);
System.out.print(ia.getA());
ChangeRef(ia);
System.out.println(ia.getA());
}
}
在控制台上输出的是[A]。
A.233
B.333
C.259
D.339
20.方法重载(overloading)必须满足[BCE]。
A.在不同class中定义的方法
B.在同一类型中定义的方法
C.方法名必须相同
D.返回类型必须相同
E.参数一定不同
F.参数可以相同
21.对于构造方法(constructor)描述正确的有[AC]。
A.构造方法没有返回类型
B.构造方法一定是public的方法
C.如果我们没有显示定义构造方法,系统会提供一个缺省的
D.构造方法不能重载
22.在java语法中允许[B]继承,[A]方法不能被继承,[CD]被继承,显示调用父类型的构造方法是通过调用[E]来完成的。
A.constructor
B.single
C.methods
D.fields
E.super
23.以下对于方法覆盖(overriding)的说法正确的有[BCDGH]。
A.方法覆盖发生在同一类中
B.方法的覆盖发生在子类型中
C.方法名一定要一样
D.参数一定要一样
E.返回类型可以不一样
F.访问权限只能一样
G.如有异常,子类型中抛出的异常与父类型中的一致或是其子类型
H.静态方法可以被静态方法覆盖
24.请看以下程序:
classVehicle{
publicvoiddrive(){
System.out.println("Vehicle:
drive");
}
}
classCarextendsVehicle{
publicvoiddrive(){
System.out.println("Car:
drive");
}
}
publicclassTest{
publicstaticvoidmain(Stringargs[]){
Vehiclev;
Carc;
v=newVehicle();
c=newCar();
v.drive();
c.drive();
v=c;
v.drive();
}
}
以下描述正确的有[C]。
A.对于语句v=c;会导致编译错误
B.对于语句v=c;会导致运行错误
C.运行输出:
Vehicle:
drive
Car:
drive
Car:
drive
D.运行输出:
Vehicle:
drive
Car:
drive
Vehicle:
drive
25.程序:
publicclassStaticTest{
static{
System.out.println("Hithere");
}
publicvoidprint(){
System.out.println("Hello");
}
publicstaticvoidmain(Stringargs[]){
StaticTestst1=newStaticTest();
st1.print();
StaticTestst2=newStaticTest();
st2.print();
}
}
什么时候字符串“Hithere”会输出[C]。
A.永远都不会输出
B.创建st1和st2时
C.第一次将StaticTest类型装载进内存时
D.显示调用print方法时
26.以下描述正确的有[ABCD]。
A.finalclass不能被继承
B.final变量不能被修改
C.final成员变量可以在构造方法中赋值
D.final方法不能被覆盖(overriden)
27.以下描述正确的有[BCDE]。
A.abstractclass一定有abstractmethod(s)
B.abstractclass可以没有abstractmethod(s)
C.定义abstractclass的目的是为了被继承
D.interface中定义的方法全是abstractmethods
E.interface中定义的变量全部是finalstatic变量
28.innerclass的类型有[ABCD]。
A.memberinnerclass
B.staticinnerclass
C.localinnerclass
D.anonymousinnerclass
E.publicinnerclass
F.globalinnerclass
29.一个匿名的内置类有可能[ABD]。
A.继承其他的类
B.实现了某一接口
C.定义了构造方法
D.可以使用成员变量
30.如果你想将一组对象按一定顺序存取,在不考虑并发访问的情况下会使用[C],反之则会使用[A];如果你想存储一组无序但唯一的对象,你会使用[B];如果你想按关键字对对象进行存取,在不考虑并发访问的情况下会使用[D],反之则会使用[E]。
A.Vector
B.HashSet
C.ArrayList
D.HashMap
E.Hashtable
31.程序代码:
publicclassExceptionTest{
publicdoublediv(doublea,doubleb){
try{
returna/b;
}catch(Exceptione){
System.out.println(“Exceptionthrown”);
}finally{
System.out.println(“Releaseresources.”);
}
//returnnull;//加上这个
}
publicstaticvoidmain(String[]args){
ExceptionTestet=newExceptionTest();
et.div(1,2);
et.div(3.4,0);
}
}
可能产生的结果是[A]:
A.编译不成功
B.无法运行
C.程序运行输出为:
Releaseresources.
Exceptionthrown.
Releaseresources.
32.[A]又叫做uncheckedexception。
CheckedException通常继承[B]。
在方法签名上指定可能有异常产生用关键字[E],在程序中产生异常用关键字[D]。
获得异常的简单描述信息调用方法[C],获得详细的异常栈信息调用方法[F]。
A.RuntimeException
B.Exception
C.getMessage
D.throw
E.throws
F.printStackTrace
某中学有若干学生(以学生对象形式存放),每个学生有一个姓名属性、班级名称
属性(String)和考试成绩属性(int),某次考试结束后,每个学生都获得了一个考试成绩。
请打印出每个班级的总分和平均分。
package;
publicclassStudent{
privateStringname;
privateStringcla;
privateintscore;
publicStudent(){
super();
}
publicStudent(Stringname,Stringcla,intscore){
super();
this.setName(name);
this.setCla(cla);
this.setScore(score);
}
publicStringgetCla(){
returncla;
}
publicvoidsetCla(Stringcla){
this.cla=cla;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetScore(){
returnscore;
}
publicvoidsetScore(intscore){
this.score=score;
}
}
package;
importjava.util.Scanner;
importjava.util.ArrayList;
importjava.util.List;
publicclassTest{
publicTest(){
Scannersc=newScanner(System.in);
Listli1=newArrayList();//存储学生姓名
Listli2=newArrayList();//存储学生班级
Listli3=newArrayList();//存储学生成绩
doubletotalS=0.0;//存储一个班的学生的总分
doubleaveS=0.0;//存储一个班的学生的平均分
intcount=0;//存储一个班的学生人数
System.out.println("请输入学生总人数:
");
intallSN=sc.nextInt();//存储学生总人数
System.out.println("请输入学生的姓名,班级,成绩:
");
for(inti=0;iStringn=sc.next();
li1.add(n);
Stringc=sc.next();
li2.add(c);
ints=sc.nextInt();
li3.add(s);
Studentst=newStudent(n,c,s);
}
System.out.println("输入的学生信息如下:
");
for(intj=0;jObjectobj1=li1.get(j);
Objectobj2=li2.get(j);
Objectobj3=li3.get(j);
System.out.println("姓名:
"+obj1+",班级:
"+obj2+",成绩:
"+obj3);
}
while(true){
System.out.println("请依次输入班级或over:
");
Stringcl=sc.next();
if("over".equals(cl)){
break;
}
for(intk=0;kif(li2.get(k).equals(cl)){
Stringobj=li3.get(k).toString();
totalS=totalS+Double.parseDouble(obj);//求总分
count++;//统计学生个数
}
}
aveS=totalS/count;//求平均分
System.out.println(cl+"班的总分为:
"+totalS+",平均分为:
"+aveS);
totalS=0;
aveS=0;
count=0;
}
}
publicstaticvoidmain(String[]args){
newTest();
}
}