java面试题经典选择题部分.docx
《java面试题经典选择题部分.docx》由会员分享,可在线阅读,更多相关《java面试题经典选择题部分.docx(31页珍藏版)》请在冰豆网上搜索。
java面试题经典选择题部分
1、给出如下代码:
classTest{
privateintm;
publicstaticvoidfun(){
//somecode...
}
}
如何使成员变量m被函数fun()直接访问?
C
A、将privateintm改为protectedintm
B、将privateintm改为publicintm
C、将privateintm改为staticintm
D、将privateintm改为intm
2、下面哪个函数是publicvoidexample(){...}的重载函数?
D
A、privatevoidexample(intm){...}
B、publicintexample(){...}
C、publicvoidexample2(){...}
D、publicintexample(intm,floatf){...}
3、给出下面的代码段:
publicclassBase{
intw,x,y,z;
publicBase(inta,intb)
{
x=a;y=b;
}
publicBase(inta,intb,intc,intd)
{
//assignmentx=a,y=b
w=d;
z=c;
}
}
在代码说明//assignmentx=a,y=b处写入如下哪个代码是正确的?
D
A、Base(a,b);
B、x=a,y=b;
C、this(a),this(b);
D、this(a,b);
4、已知如下定义:
Strings="story";
下面哪个表达式是合法的?
A
A、s+="books";
B、charc=s[1];
C、intlen=s.length;
D、Stringt=100;
5、Java中main()函数的返回值是什么?
D
A、String
B、int
C、char
D、void
6、如下哪个字串在Java中可作为自定义标识符?
A
A、$number
B、super
C、3number
D、#number
7、如下哪个不是Java中有效的关键字?
B
A、const
B、NULL
C、false
D、this
8、如下哪个不是Java中正确的整数表示?
D
A、22
B、0x22
C、022
D、22H
9、下面的代码段中,执行之后i和j的值是什么?
C
inti=1;
intj;
j=i++;
A、1,1
B、1,2
C、2,1
D、2,2
10、下面句话是正确的?
A
A>>是算术右移操作符.
B<<是算术右移操作符.
C>>>是算术右移操作符
D<<<是算术右移操作符
11、下面哪个赋值语句不是合法的?
A
A、floata=2.0
B、doubleb=2.0
C、intc=2
D、longd=2
12、下面哪个是main()函数的合法参数?
C
A、charargs[]
B、charargs[][]
C、Stringarg[]
D、Stringargs
13、已知表达式intm[]={0,1,2,3,4,5,6};
下面哪个表达式的值与数组最大下标数相等?
B
A、m.length()
B、m.length-1
C、m.length()+1
D、m.length+1
14.指出下列程序运行的结果(D)
publicclassExample{
Stringstr=newString(″good″);
char[]ch={′a′,′b′,′c′};
publicstaticvoidmain(Stringargs[]){
Exampleex=newExample();
ex.change(ex.str,ex,ch);
System.out.print(ex.str+″and″);
System.out.print(ex.ch);
}
publicvoidchange(Stringstr,charch[]){
str=″testok″;
ch[0]=′g′;
}
}
A.goodandabc B.goodandgbc
C.testokandabc D.testokandgbc
15.函数重载是指(A)
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
16.在异常处理中,如释放资源、关闭文件、关闭数据库等由(C)来完成。
A.try子句 B.catch子句
C.finally子句 D.throw子句
17.下面哪条语句定义了5个元素的数组(A)
A、int[]a={22,23,24,25,12};
B、inta[]=newint(5);
C、int[5]array;
D、int[]arr;
18、已知如下的命令执行javaMyTestabc请问哪个语句是正确的?
C
A、args[0]="MyTestabc"
B、args[0]="MyTest"
C、args[0]="a"
D、args[1]='c'
19.Applet类的直接父类是(D)
A.Component类 B.Container类
C.Frame类 D.Panel类
20.对于catch子句的排列,下列哪种是正确的(B)
A.父类在先,子类在后
B.子类在先,父类在后
C.有继承关系的异常不能在同一个try程序段内
D.如何排列都可以
21.下面哪个语句不能定义一个字符变量(B)
A、charc1=’a’;B、charc2=”S”;
C、charc4=97;D、charc3=’\u0041’;
22.构造方法何时被调用(B)
A.类定义时 B.创建对象时
C.调用对象方法时 D.使用对象的变量时
23.下面的表达式中正确的是(AE)
A.Strings=″你好″;inti=3;s+=i;
B.Strings=″你好″;inti=3;if(i==s){s+=i};
C.Strings=″你好″;inti=3;s=i+s;
D.Strings=″你好″;inti=3;s=i+;
24、已知如下代码:
publicclassTest
{
longa[]=newlong[10];
publicstaticvoidmain(Stringarg[]){
System.out.println(a[6]);
}
}
请问哪个情况是正确的?
C
A、输出为null.
B、输出为0.
C、编译时出错
D、运行时出错
25、Frame的默认的布局管理器是下列哪一个(B)
A.FlowLayout B.BorderLayout
C.GridLayout D.CardLayout
26.下列语句片段
inta=10,b=4,c=20,d=6;
System.out.println(a++*b+c*--d);
的结果为(C)
A.144 B.28
C.140 D.不能执行
27.下列语句片段:
inta=-67,b=116,c=78;
intd=~a|b&c;
System.out.println(d)的结果为(A)
A.70 B.67
C.78 D.56
28.对象使用时,下面描述错误的是(B)
A.通过“.”运算符调用成员变量和方法
B.通过成员变量的访问权限设定限制自身对这些变量方法的调用
C.将一个对象申明为类的成员时,必须在使用前为其分配内存
D.在方法中使用对象作为参数时,采用引用调用
29.执行下列代码后,哪个结论是正确的String[]s=newString[10];B
A.s[10]为″″ B.s[9]为null
C.s[0]为未定义 D.s.length为101
30.Java编程所必须的默认引用包为(B)
A.java.sys包 B.java.lang包
C.java.new包 D.以上都不是
31.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:
(C)
A.privateclassMyClassextendsObject
B.classMyClassextendsObject
C.publicclassMyClass
D.privateclassMyClassextendsObject
32、以下哪个方法用于定义线程的执行体?
C
A、start()
B、init()
C、run()
D、main()
E、synchronized()
33如果类中的成员变量可以被同一包访问,则使用如下哪个约束符?
D
A、private
B、public
C、protected
D、缺省
E、final
34、以下哪个约束符可用于定义成员常量?
B
A、static
B、final
C、abstract
D、finally
35.当方法遇到异常又不知如何处理时,下列哪种说法是正确的(B)
A.捕获异常 B.抛出异常
C.声明异常 D.嵌套异常
36.Java程序的执行过程中用到一套JDK工具,其中java.exe是指(C)
A.Java文档生成器 B.Java解释器
C.Java编译器 D.Java类分解器
37.下列不属于容器的是(B)
A.Window B.TextBox
C.Panel D.ScrollPane
38、已知如下类说明:
publicclassTest{
privatefloatf=1.0;
intm=12;
staticintn=1;
publicstaticvoidmain(Stringarg[]){
Testt=newTest();
//somecode...
}
}
如下哪个使用是正确的?
D
A、t.f
B、this.n
C、Test.m
D、Test.n
39、已知如下代码:
1:
classExample{
2:
Stringstr;
3:
publicExample(){
4:
str="example";
5:
}
6:
publicExample(Strings){
7:
str=s;
8:
}
9:
}
10:
classDemoextendsExample{
11:
}
12:
publicclassTest{
13:
publicvoidf(){
14:
Exampleex=newExample("Good");
15:
Demod=newDemo("Good");
16:
}}
哪句语句会导致错误?
E
A、line3
B、line6
C、line10
D、line14
E、line15
40、已知如下类定义:
classBase{
publicBase(){//...}
publicBase(intm){//...}
publicvoidfun(intn){//...}
}
publicclassChildextendsBase{
//membermethods
}
如下哪句可以正确地加入子类中?
D
A、privatevoidfun(intn){//...}
B、voidfun(intn){//...}
C、protectedvoidfun(intn){//...}
D、publicvoidfun(intn){//...}
41在如下源代码文件Test.java中,哪个是正确的类定义?
B
A、publicclasstest{
publicintx=0;
publictest(intx)
{
this.x=x;
}
}
B、publicclassTest{
publicintx=0;
publicTest(intx){
this.x=x;
}
}
C、publicclassTestextendsT1,T2{
publicintx=0;
publicTest(intx){
this.x=x;
}
}
D、protectedclassTestextendsT2{
publicintx=0;
publicTest(intx){
this.x=x;
}
}
2、当Frame改变大小时,放在其中的按钮大小不变,则使用如下哪个layout?
A
A、FlowLayout
B、CardLayout
C、BorderLayout
D、GridLayout
43、如下哪个方法可以从WindowEvent获取事件源?
C
A、getFrame()
B、getID()
C、getSource()
D、getEvent()
44监听器接口的方法返回值是什么?
C
A、int
B、String
C、void
D、Object
45下面哪个方法与applet的显示无关?
B
A、update()B、draw()
C、repaint()D、paint()
46下面哪个不是Java中的容器?
B
A、ScrollPaneB、Canvas
C、DialogD、Applet
47在Java中,属于整数类型变量的是(C)
A.single B.double
C.byte D.char
48下面哪个描述是正确的(C)
A、Applet程序中不需要main()方法,也不能有
B、Application程序中可以没有main()方法。
C、Applet程序中可以不定义init()方法
D、Application程序中必须有run()方法
49给出一段程序,试判断哪个是正确的结果(B)
publicclassrtExcept{
publicstaticvoidthrowit(){
System.out.print(“throwit”);
thrownewRuntimeException();}
publicstaticvoidmain(String[]aa){
try{
System.out.print(“hello“);
throwit();}
catch(Exceptionre){
System.out.print(“caught”);}
finally{
System.out.print(“finally”);}
System.out.print(“after”);
}
}
A、hellothrowitcaught
B、hellothrowitcaughtfinallyafter
C、hellothrowitRuntimeExceptionafter
D、hellothrowitcaughtfinallyafterRuntimeException
50.下列哪个方法可用于创建一个可运行的类(A)
A.publicclassXimplementsRunable{publicvoidrun(){......}}
B.publicclassXimplementsThread{publicvoidrun(){......}}
C.publicclassXimplementsThread{publicintrun(){......}}
D.publicclassXimplementsRunable{protectedvoidrun(){......}}
1.Whichstatementistrue?
A.Ananonymousinnerclassmaybedeclaredasfinal.
B.Ananonymousinnerclasscanbedeclaredasprivate.
C.Ananonymousinnerclasscanimplementmultipleinterfaces.
D.Ananonymousinnerclasscanaccessfinalvariablesinanyenclosingscope.
E.Constructionofaninstanceofastaticinnerclassrequiresaninstanceoftheenclosingouterclass.
答案是D
anonymousinnerclasscannotdeclaredwithanymodifyer.
andcanonlyimplementoneinterface
2.Whichstatementaboutstaticinnerclassesistrue?
A.Ananonymousclasscanbedeclaredasstatic
B.Astaticinnerclasscannotbeastaticmemberoftheouterclass
C.Astaticinnerclassdoesnotrequireaninstanceoftheenclosingclass
D.Instancemembersofastaticinnerclasscanbereferencedusingtheclassnameofthestaticinnerclass
答案是C
becausestatic,itneedn'tinstanceofenclosingouterclass
andit'sinstancememberneedit'sinstance.
java中都是按值传递的,所以a,b还是指向原来的地址空间,经过operate操作后,x更改了该地址空间的值,而y没有.
publicclassFoo{
publicstaticvoidmain(Stringsgf[]){
StringBuffera=newStringBuffer("A");
StringBufferb=newStringBuffer("B");
operate(a,b);//方法调用完以后,a对象的内容为:
AB,b对象的内容为:
B
System.out.println(a+","+b);
}
staticvoidoperate(StringBufferx,StringBuffery){
//对象传递进来以后又分别复制了一个x和y对象x'和y',
x'和x指向同一个对象。
y'和y指向同一个对象。
x.append(y);//所以执行此步操作以后,main中的x对象的内容也变化了。
//因为本来就是指向同一个对象吗!
y=x;//执行此步操作以后,main中的y对象的内容没变!
//因为此y费彼y也!
}
}
classValHold{
publicinti=10;
}
publicclassObParm{
publicstaticvoidmain(Stringargv[]){
ObParmo=newObParm();
o.amethod();
}
publicvoidamethod(){
inti=99;
ValHoldv=newValHold();
v.i=30;
another(v,i);
System.out.println(v.i);
}//Endofamethod
publicvoidanother(ValHoldv,inti){
i=0;
v.i=20;
ValHoldvh=newValHold();
v= vh;
System.out.println(v.i+""+i);
}//Endofanother
}
1)10,0,30
2)20,0,30
3)20,99,30
4)10,0,20
答案是4)
首先必须明白一点
参数传递到方法内的时候实际上是复制了一份
而且java并不直接处理对象,而是通过对象参考来处理的。
publicstaticvoidmain(Stringargv[]){
ObParmo=newObParm();
o.amethod();
}
publicvoidamethod(){
inti=99;
ValHoldv=newValHold();
v.i=30;
another(v,i);
System.out.println(v.i);
}//Endofamethod
publicvoidanother(ValHoldv,inti){
//参数v,i传进来后进行复制,并且两个v都是指向同一个对象
i=0;
v.i=20;//这里就导致所指向的对象的i值变化
ValHoldvh=newValHold();
v= vh;//这里改变了v的对象参考,指向新的一个ValHold对象
System.out.println(v.i+""+i);
}//Endofanother
}
首先,可以肯定c是错误的。
因为当一个thread被notify后,它只是从waitpool转向object'slockpool,不一定马上能够拿到lock