Java试题一、选择题(38X1.5)注意,题目有多选,也有单选。请认真作答。1.在JAVA中,下列哪些说法是正确的(AC)A.java源文件的扩展名为.javaB.写好的java源程序可以直接运行C.编写的源程序必须先编译后才能运行D.程序员可以读懂扩展名为.class的文件2.下列标识符哪个是合法的(BD)A.classB.$abcC.1234D._name3.下面哪些赋值语句是正确的?(ABD)A.longtest=012;B.floatf=-412;C.intother=(int)true;D.doubled=0x12345678;E.byteb=128;4.在Java中,下列语句不能通过编译的有(BD)A.Strings=“join”+3;B.inta=“join”+3;C.inta=‘a’+5;D.floatf=5+5.5;5.设a=3,则表达式(--a)a的结果是(B)A.16B.8C.24D.126.下列代码运行的结果是(C)publicstaticvoidmain(String[]args){intx=4;inty=5;if(x++4&++y5){x++;}System.out.println(x=+x+,y=+y);}A.x=4,y=5B.x=4,y=6C.x=5,y=6D.x=6,y=67.尝试运行下面的代码会发生什么?(B)publicclassTest{publicstaticvoidmain(String[]args){booleanm=true;if(m=false){System.out.println(true);}else{System.out.println(false);}}}A.输出字符串”true”B.输出字符串”false”C.编译时错误D.运行时错误8.编译并运行以下代码将发生什么?(E)publicstaticvoidmain(Stringargs[]){chardigit='a';for(inti=0;i10;i++){switch(digit){case'x':{intj=0;System.out.println(j);}default:{intj=100;System.out.println(j);}}}inti=j;System.out.println(i);}A.输出11次100B.输出10次100,然后抛出运行期异常C.编译错误,因为变量i不能在main()方法中被声明2次D.编译错误,因为变量j不能在main()方法中被声明2次E.以上都不对9.classDemoB{publicstaticintfun(intc){returnc+=2;}publicstaticvoidmain(String[]args){inttemp=fun(2);System.out.println(temp);}}A.2B.4C.6D.810.下面哪些函数是publicvoidaMethod(){...}的重载函数?(BD)A.voidaMethod(){...}B.publicintaMethod(inta,floatb){...}C.publicvoidaMethod(){...}D.publicfloataMethod(intm){…}11.在java中,关于数组描述正确的是(BD)A.数组中的索引下标从1开始B.存储在数组当中的数据都属于同一数据类型C.通过数组名.length()能获得数组的长度D.数组的最大索引下标是数组的长度减112.下面程序的输出结果是什么(D)int[]arr=newint[10];System.out.println(arr[0]);A.编译不通过B.运行时出错C.输出nullD.输出013.下面哪个语句正确地声明一个整型的二维数组(CD)A.inta[][]=newint[][];B.intb[10][10]=newint[][];C.intc[][]=newint[10][10];D.int[]d[]=newint[10][10];14.以下代码输出是(D)classDemo{publicstaticvoidmain(String[]args){inti=0;intsum=0;while(i=10){i++;if(i%2!=0)continue;sum+=i;}System.out.println(sum);}}A.55B.45C.35D.3015.和下面代码能完成相同的选项是(B)classDemo{publicstaticvoidmain(String[]args){inti=1;intsum=0;while(i=100){if(i%2==0){sum=sum+i;}i++;}System.out.println(sum);}}A.for(intx=1;x=100;x++){sum=sum+x;}B.for(intx=0;x=100;x+=2){sum=sum+x;}C.for(intx=1;x=100;x+=2){sum=sum+x;}D.上述全对16.下列有关类、对象和实例的叙述,正确的是哪一项?(D)A.类就是对象,对象就是类,实例是对象的另一个名称,三者没有差别B.对象是类的抽象,类是对象的具体化,实例是对象的另一个名称C.类是对象的抽象,对象是类的具体化,实例是类的另一个名称D.类是对象的抽象,对象是类的具体化,实例是对象的另一个名称17.下面关于java中包的说法正确的是(ACD)A.在java中可以使用import语句导入包B.在java中可以使用package语句导入包C.位于同一个包中的类,不需要导包就可以直接访问D.不同的包中可以出现类名相同的类18.下列有关抽象类的叙述正确的是哪项?(C)A.抽象类中一定含有抽象方法B.抽象类既能被实例化也能被继承C.抽象类的声明必须包含abstract关键字D.抽象类中不能有构造方法19.下列有关接口的叙述错误的是哪项?(CD)A.接口中只能包含抽象方法和常量B.一个类可以实现多个接口C.类实现接口时必须实现其中的方法D.接口不能被继承20.运行以下代码片段,输出结果是?(D)classX{Yb=newY();X(){System.out.print(X);}}classY{Y(){System.out.print(Y);}}publicclassZextendsX{Yy=newY();Z(){System.out.print(Z);}publicstaticvoidmain(String[]args){newZ();}}A.ZB.YZC.XYZD.YXYZ21.下列关于类的继承的描述,正确的有(BD)A.一个类可以同时继承多个父类B.一个类可以具有多个子类C.子类会自动拥有父类所有的方法D.一个类继承另一个类需要使用extends关键字22.下列选项中关于java中this关键字的说法错误的有(D)A.this关键字是一个对象的引用B.this关键字可以用于引用当前类以外其他类型的对象C.this可用于构造函数中,调用类本身重载的构造函数,但是必须写在首行D.this可用于静态方法中23.下列关于构造函数的说法正确的是(AB)A.方法名必须与类名相同B.使用new关键字创建对象时,java虚拟机会自动调用构造函数C.我们在定义一个类时,必须要声明至少一个构造函数D.构造函数中不能使用return语句24.编译并运行以下代码将发生什么?(D)classMyClass{intx;MyClass(inti){x=i;}publicstaticvoidmain(Stringargs[]){MyClassm1=newMyClass(100);MyClassm2=newMyClass(100);if(m1.equals(m2)){System.out.println(Bothareequal);}else{System.out.println(Botharenotequal);}}}A.代码编译时报出错误提示信息“equals()方法未定义”B.编译通过,抛出运行期异常.C.输出Bothareequal.D.输出Botharenotequal25.运行以下的main()方法,结果是?(A)1publicstaticvoidmain(String[]args)2{3StringmyString;4intx=100;56if(x100)myString=xislessthan100;7if(x100)myString=xisgreaterthan100;8System.out.println(myString.length());9}A.编译时报出错误提示信息“变量myString没有被初始化”B.编译通过C.编译未能通过。但如果变量myString在第8行前的代码中被初始化,代码可以编译通过,运行时可以输出字符串myString的长度D.以上都不对26.有如下代码,请问哪些是正确的?(ACD)classClassA{}classClassBextendsClassA{}classClassCextendsClassA{}以及ClassAp0=newClassA();ClassBp1=newClassB();ClassCp2=newClassC();ClassAp3=newClassB();ClassAp4=newClassC();A.p0=p1;B.p1=p2;C.p1=(ClassB)p3;D.p2=(ClassC)p4;27.关于继承,以下说法正确的是:(AD)A.Java中只支持单继承,一个类只能继承一个类,但是可以有多个子类B.一个类如果没有自己写无参构造方法,那么子类将无法继承C.子类可以当父类用,父类不可以当子类用D.子类重写父类方法时访问权限不能更低28.编译并运行以下代码的输出结果是?(A)Strings1=newString(amit);System.out.println(s1.replace('m','r'));System.out.println(s1);Strings3=arit;Strings4=arit;Strings2=s1.replace('m','r');System.out.println(s2==s3);System.out.println(s3==s4);A.aritamitfalsetrueB.aritaritfalsetrueC.amitamitfalsetrueD.aritamittruetrue29.下列哪些代码可以顺利通过编译和运行?(ABD)A.Integeri=newInteger('A');B.Integeri=newInteger(7);C.Characterc=newCharacter(A);D.Booleanb=newBoolean(null);E.Integeri=newInteger(0x10);30.在Java中,如果要在字符串类型对象s=java中,得到字符'v'出现的位置,可使用下面的那个方法?(C)A.s.matches('v');B.s.charAt('v');C.s.indexOf('v');D.s.substring('v');31.下列关于ArrayList、Vector和LinkedList集合的说法正确是有(ACD)A.ArrayList集合底层是数组实现,该集合线程不安全B.Vector集合元素的存放是无序的C.LinkedList集合底层是链表结构,适合做元素的增删操作D.这三个集合都是List接口的实现类32.下面程序的输出结果是什么(D)Setset=newHashSet();set.add(aaa);set.add(bbb);set.add(aaa);System.out.println(set.size());A.编译不通过B.运行时出错C.输出3D.输出233.下列哪些方法是ArrayList和LinkedList集合中都定义的(ACD)A.add(Obje