java基础考试题及答案.docx
- 文档编号:29929366
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:27
- 大小:25.04KB
java基础考试题及答案.docx
《java基础考试题及答案.docx》由会员分享,可在线阅读,更多相关《java基础考试题及答案.docx(27页珍藏版)》请在冰豆网上搜索。
java基础考试题及答案
新员工考试
一、选择题(共30题,每题2分)
1.下面哪些是合法的标识符?
(多选题)
A.$persons
B.TwoUsers
C.*point
D.this
E._endline
答案 A,B,E
分析 Java的标识符可以以一个Unicode字符,下滑线(_),美元符($)开始,后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字(this保留字)。
2.哪些是将一个十六进制值赋值给一个long型变量?
(单选题)
A.longnumber=345L;
B.longnumber=0345;
C.longnumber=0345L;
D.longnumber=0x345L
答案 D
分析 十六进制数以0x开头,long型数以L(大小写均可,一般使用大写,因为小写的l和数字1不易区分)。
3.下面的哪些程序片断可能导致错误?
(多选题)
A.Strings="Gonewiththewind";
Stringt="good";
Stringk=s+t;
B.Strings="Gonewiththewind";
Stringt;
t=s[3]+"one";
C.Strings="Gonewiththewind";
Stringstandard=s.toUpperCase();
D.Strings="homedirectory";
Stringt=s-"directory";
答案 B,D
分析
A:
String类型可以直接使用+进行连接运算。
B:
String是一种Object,而不是简单的字符数组,不能使用下标运算符取其值的某个元素,错误。
C:
toUpperCase()方法是String对象的一个方法,作用是将字符串的内容全部转换为大写并返回转换后的结果(String类型)。
D:
String类型不能进行减(-)运算,错误。
4.pointx处的哪些声明是句法上合法的?
(多选题)
classPerson{
privateinta;
publicintchange(intm){returnm;}
}
publicclassTeacherextendsPerson{
publicintb;
publicstaticvoidmain(Stringarg[]){
Personp=newPerson();
Teachert=newTeacher();
inti;
//pointx
}
}
A.i=m;
B.i=b;
C.i=p.a;
D.i=p.change(30);
E.i=t.b.
答案 D,E
分析
A:
m没有被声明过,不能使用。
B:
虽然b是类Teacher的public成员变量,但是在静态方法中不能使用类中的非静态成员。
C:
a是类Person的private成员,在类外不能直接引用。
D:
change(intm)方法是public方法,并且返回一个int型值,可以通过类的实例变量p引用并赋值给一个int型变量。
E:
b是类Teacher的public成员变量,且是int型,可以通过类的实例变量t引用并赋值给一个int型变量。
5.下面的代码片断(多选题):
1)publicvoidcreate(){
2)VectormyVect;
3)myVect=newVector();
4)}
下面的哪些陈述正确?
A.第二行的声明不会为变量myVect分配内存空间。
B.第二行的声明分配一个到Vector对象的引用的内存空间。
C.第二行语句创建一个Vector类对象。
D.第三行语句创建一个Vector类对象。
E.第三行语句为一个Vector类对象分配内存空间。
答案 A,D,E
分析
要为一个新对象分配空间必须执行newXxx()调用,new调用执行以下的操作:
1.为新对象分配空间并将其成员初始化为0或者null。
2.执行类体中的初始化。
(例如在类中有一个成员声明inta=10;在第一步后a=0,执行到第二步后a=10)
3.执行构造函数。
4.变量被分配为一个到内存堆中的新对象的引用。
6.下面的哪些答案可以用以表示八进制值8?
(单选题)
A.010
B.0x10
C.08
D.0x8
答案 A
分析 八进制值以0开头,以0x开头的为十六进制值,八进制中不能出现数字8,最大只有7。
1)classPerson{
2)publicvoidprintValue(inti,intj){/*…*/}
3)publicvoidprintValue(inti){/*...*/}
4)}
5)publicclassTeacherextendsPerson{
6)publicvoidprintValue(){/*...*/}
7)publicvoidprintValue(inti){/*...*/}
8)publicstaticvoidmain(Stringargs[]){
9)Persont=newTeacher();
10)t.printValue(10);
11)}
12)}
第十行的声明将调用哪些方法?
(单选题)
A.online2
B.online3
C.online6
D.online7
答案 D
分析 变量t是一个Person对象,但是它是用Teacher实例化的,这个问题涉及到java的编译时多态和运行时多态的问题,就编译时多态来说,t实际上是一个Person类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要
进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t实际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher类的对应方法。
在java中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。
7.给出下面的代码:
(单选题)
x的取值在什么范围内时将打印字符串"second"。
A.x>0
B.x>-3
C.x<=-3
D.x<=0&x>-3
答案 D
分析 x>0时打印"first",x>-3&&x<=0时打印"second",x<=-3时打印"third"。
这个题目没有什么难的,只要理解if语句的语法就可以了。
8.下面的哪些赋值语句是不正确的(单选题)
A.floatf=11.1;
B.doubled=5.3E12;
C.doubled=3.14159;
D.doubled=3.14D.
答案A
题目:
。
浮点数的赋值是带有小数点的数字缺省是double型的,如果在浮点数后面加f或者F则是float,后面加d或者D则是double,科学计数法形式的浮点数也是double型的,而double的精度比float高,将一个高精度的double赋值给一个低精度的float时需要进行强制类型转换,反之则不需要。
9.给出下面的不完整的类代码:
(单选题)
classPerson{
Stringname,department;
intage;
publicPerson(Stringn){name=n;}
publicPerson(Stringn,inta){name=n;age=a;}
publicPerson(Stringn,Stringd,inta){
//doingthesameastwoargumentsversionofconstructor
//includingassignmentname=n,age=a
department=d;
}
}
下面的哪些表达式可以加到构造方法中的"doingthesameas..."处?
A.Person(n,a);
B.this(Person(n,a));
C.this(n,a);
D.this(name,age).
答案C
分析:
在同一个类的不同构造方法中调用该类的其它构造方法需要使用this(…)的形式,而且必须是在构造方法的第一行调用,这个和普通的方法重载调用的方式不同,普通的方法可以直接使用方法名加参数来调用,而且调用位置没有限制,因此答案A是不行的,B的语法就是错误的,D的错误在于在父类型的构造函数被调用前不能引用类的成员。
构造方法是一个类对象实例化的起点(虽然严格来说首先执行的并不是构造方法的第一个语句,而是内存的分配),因此在构造方法中不能将成员作为参数引用。
10.publicvoidtest(){//(多选题)
try{
oneMethod();
}catch(ArrayIndexOutOfBoundsExceptione){
}catch(Exceptione){
}finally{
}
}
在oneMethod()方法运行正常的情况下将显示什么?
A.condition1
B.condition2
C.condition3
D.finally
答案ad
分析:
如果try块中的语句在执行时发生异常,则执行从该处中断而进入catch块,根据异常的类型进行匹配,最前面的优先进行匹配比较,只要该异常是catch中指定的异常的子类就匹配成功进而执行相应的catch中的内容,而finally块中的内容无论是否发生异常都将被执行。
11.给出下面的代码:
(单选题)
publicclassTest{
voidprintValue(intm){
while(--m>10)
}
publicstaticvoidmain(Stringarg[]){
inti=10;
Testt=newTest();
t.printValue(i);
}
}
输出将是什么?
A.Thevalueis8
B.Thevalueis9
C.Thevalueis10
D.Thevalueis11
答案:
c
此题考察的是do…while循环和--操作符的知识,do…while最少被执行一次,在执行完do中的内容后判断while中的条件是否为true,如果为true的话就再执行do中的内容,然后再进行判断,以此类推直到while的判断为false时退出循环执行循环后面的内容,而—操作符的规则是在变量右边的--将先进行运算,然后才是使变量的值减一,而在变量左边的是先将变量的值减一再运算。
12.给出下面的代码:
(单选题)
1)publicvoidmodify(){
2)inti,j,k;
3)i=100;
4)while(i>0){
5)j=i*2;
7)k=k+1;
8)i--;
9)}
10)}
哪些行在编译时可能产生错误。
A.line4
B.line6
C.line7
D.line8
答案 c
这个问题在前面有关变量的类型及其作用域的问题中讨论过,局部变量在使用前必须显式初始化,而代码中的变量k在使用前没有。
13.给出下面的代码片断:
(单选题)
1)Stringstr=null;
2)if((str!
=null)&&(str.length()>10)){
3)
4)}
5)elseif((str!
=null)&(str.length()<5)){
6)
7)}
哪些行将导致错误?
A.line1
B.line2
C.line5
D.line8
答案 c
此题需要将代码仔细看清楚,查询没有逻辑错误,if…else的使用没有问题,也没有拼写错误,错误在于第5行的“与”操作符的使用,逻辑操作符(logicaloperator)的“与”应该是&&,而&是位逻辑操作符(bitwiselogicaloperator)的“与”,使用的对象不一样,逻辑操作符的“与”的左右操作数都应该是布尔型(logicalboolan)的值,而位逻辑操作符的左右操作数都是整型(integral)值。
14.给出下面的代码:
(单选题)
publicclassPerson{
staticintarr[]=newint[10];
publicstaticvoidmain(Stringa[]){
}
}
那个叙述是对的。
A.编译时将发生错误。
B.编译时正确但是运行时出错。
C.输出为0。
D.输出为null
答案 c
int型数组是类对象,它在类被加载时完成初始化,在前面题目中已经有叙述,由于是原始数据类型int,其初始值为0。
15.publicclassParent{//(多选题)
publicintaddValue(inta,intb){
ints;
s=a+b;
returns;
}
}
classChildextendsParent{
}
哪些方法可以加入类Child中?
A.intaddValue(inta,intb){//dosomething...}
B.publicvoidaddValue(){//dosomething...}
C.publicintaddValue(inta){//dosomething...}
D.publicintaddValue(inta,intb)throwsMyException{//dosomething...}
答案 bc
此题涉及方法重载(overload),方法重写(override)以及类派生时方法重写的规则。
方法重载的规则是:
一、参数列表必须不同,个数的不同完全可以,如果个数相同则参数类型的不同不能引起歧意,例如int和long,float和double就不能作为唯一的类型不同;二、返回值可以不同,但是不能是重载时唯一的不同点(这点和c++中不同,c++中返回类型必须一致)。
方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否则就是重载,java中方法重写的一个重要而且容易被忽略的规则是重写的方法的访问权限不能比被重写的方法的访问权限低!
重写的另一个规则是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种类。
此题中答案a的错误就是重写的访问权限比被重写的方法的低,而b,c都属于重载,d的错误在于比被重写的方法抛弃了更多种类的异常。
16.共有成员变量MAX_LENGTH是一个int型值,变量的值保持常数值100。
使用一个短声明定义这个变量。
(单选题)
A.publicintMAX_LENGTH=100;
B.finalintMAX_LENGTH=100;
C.finalpublicintMAX_LENGTH=100;
D.publicfinalintMAX_LENGTH=100。
答案 d
Java中共有变量使用public定义,常量变量使用final,另外注意的是修饰符的顺序,一个最完整的修饰是publicstaticfinalintvarial_a=100;这个顺序不能错,这和c++中也是不同的。
而答案c恰恰错在修饰符的顺序上。
17.下面的那个java源文件代码片断是对的?
(多选题)
A.packagetestpackage;
publicclassTest{//dosomething...}
B.importjava.io.*;
packagetestpackage;
publicclassTest{//dosomething...}
C.importjava.io.*;
classPerson{//dosomething...}
publicclassTest{//dosomething...}
D.importjava.io.*;
importjava.awt.*;
publicclassTest{//dosomething...}
答案 acd
java中的package语句必须是源文件中除去说明以外的第一条语句,导入包语句可以有几个,但是必须位于package语句之后,其它类定义之前,一个源文件中可以有几个类,但最多只能有一个是public的,如果有,则源文件的文件名必须和该类的类名相同。
18.下面的哪些声明是合法的?
(多选题)
A.longl=4990;
B.inti=4L;
C.floatf=1.1;
D.doubled=34.4;
E.doublet=0.9F.
答案 ade
此题的考点是数字的表示法和基本数据类型的类型自动转换,没有小数点的数字被认为是int型数,带有小数点的数被认为是double型的数,其它的使用在数字后面加一个字母表示数据类型,加l或者L是long型,加d或者D是double,加f或者F是float,可以将低精度的数字赋值给高精度的变量,反之则需要进行强制类型转换,例如将int,short,byte赋值给long型时不需要显式的类型转换,反之,将long型数赋值给byte,short,int型时需要强制转换(inta=(int)123L;)。
19.如下描述:
(多选题)
publicclassParent{
intchange(){…}
}
classChildextendsParent{
}
哪些方法可被加入类Child?
A.publicintchange(){}
B.intchang(inti){}
C.privateintchange(){}
D.abstractintchang(){}
答案 ab
这个题目的问题在第35题中有详尽的叙述。
需要注意的是答案D的内容,子类可以重写父类的方法并将之声明为抽象方法,但是这引发的问题是类必须声明为抽象类,否则编译不能通过,而且抽象方法不能有方法体,也就是方法声明后面不能带上那两个大括号({}),这些D都不能满足。
20.给出下面的代码:
(单选题)
1)classParent{
2)privateStringname;
3)publicParent(){}
4)}
5)publicclassChildextendsParent{
6)privateStringdepartment;
7)publicChild(){}
8)publicStringgetValue(){returnname;}
9)publicstaticvoidmain(Stringarg[]){
10)Parentp=newParent();
11)}
12)}
哪些行将导致错误?
A.line3
B.line6
C.line7
D.line8
E.line10
答案 d
第8行的getValue()试图访问父类的私有变量,错误,参看前面有关变量类型及其作用域的叙述
21.变量"result"是一个boolean型的值,下面的哪些表达式是合法的?
(多选题)
A.result=true;
B.if(result){//dosomething...}
C.if(result!
=0){//sosomething...}
D.result=1
答案 ab
Java的boolean不同于c或者c++中的布尔值,在java中boolean值就是boolean值,不能将其它类型的值当作boolean处理。
22.类Teacher和Student都是类Person的子类(单选题)
Personp;
Teachert;
Students;
P,t和s都是非空值。
if(tinstanceofPerson){s=(Student)t;}
这个if语句导致的结果是什么
A.将构造一个Student对象。
B.表达式合法。
C.编译时非法。
D.编译时合法而在运行时可能非法。
答案 c
instanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。
当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。
此题中的if语句的判断没有问题,而且将返回真,但是后面的类型转换是非法的,因为t是一个Teacher对象,它不能被强制转换为一个Student对象,即使这两个类有共同的父类。
如果是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 考试题 答案