CMS专题

单选题1. public class A {  2. public String doit(int x, int y) {  3. return “a”;  4. }  5.  6. public String doit(int... vals) {  7. return “b”;  8. } 9. }  Given:  25. A a=new A();  26. System.out.println(a.doit(4, 5));  What is the result?()ALine 26 prints

题目
单选题
1. public class A {  2. public String doit(int x, int y) {  3. return “a”;  4. }  5.  6. public String doit(int... vals) {  7. return “b”;  8. } 9. }  Given:  25. A a=new A();  26. System.out.println(a.doit(4, 5));  What is the result?()
A

 Line 26 prints “a” to System.out.

B

 Line 26 prints „b” to System.out.

C

 An exception is thrown at line 26 at runtime.

D

 Compilation of class A will fail due to an error in line 6.

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下类声明: class XA { int x; public: XA(int n){x=n;} }; class XB:public XA { int y; public: XB(int a,int b); }; 在构造函数XB的下列定义中,正确的是

A.XB::XB(int a,int b):x(a),y(b){}

B.XB::XB(int a,int b):XA(a),y(b){}

C.XB::XB(int a,int b):x(a),XB(b){}

D.XB::XB(int a,int b):XA(a),XB(b){}


正确答案:B
解析:派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中新增的成员初始化。格式为:派生类名(构造函数形参表):基类构造函数(形参表)。

第2题:

下面程序段的输出结果为( )。 package test; public class ClassA { int x=20: static int y=6; public static void main(String args[]) { ClassB b=new ClassB; go(10); System.out.println("x="+b.x); } } class ClassB { int X; void go(int y) { ClassA a=new ClassA; x=a.Y ; } }

A.x=10

B.x=20

C.x=6

D.编译不通过


正确答案:C
C。【解析】本题考查在Java中静态变量(类变量)的用法。在题目程序段中生成了一个staticinty=6类变量,在ClassA中调用的b.go(10),只不过是在ClassB中的一个局部变量,通过调用ClassB中的90方法可以生成一个ClassA对象,并给这个新生成的对象赋以ClassA中的类变量Y的值。从main方法作为入口执行程序,首先生成一个ClassB的对象,然后b.go(10)会调用ClassA,会给X和Y赋值,X=a.Y后,X值为6,再返回去执行System.out.println("x="+b.x)语句,输出为x=6,可见,正确答案为选项C。

第3题:

执行下面程序段,屏幕上将输出( )。 public class Test { private int x=10,y=20; public Test (int x,int y) { System.out.println (x+this.x); System.out.println (y+y); } public static void main (String[] args) { Testt= new Test(30,50); } }

A.无输出

B.20 40

C.40 100

D.40 70


正确答案:C
解析:通过new生成一个类的实例时,自动调用该类的构造方法,本题中的构造方法中有两个输出语句,因此A不正确。其余三个答案主要是考查局部变量和成员变量的区别。在方法中如要用成员变量,为区别于局部变量,必须用this关键字。第一个输出语句中的x为参数,是局部变量,其值为30,this.x引用的是成员变量,其值为10,因此第一个语句输出的值为40;第二个输出语句中的y都是局部变量,每一个y的值是接收到的参数值50,因此输出为100。

第4题:

下列代码执行之后,输出的结果为______。 public class ex38 { public static void main(String[] args) { int x=12; int m=11; int y=13; int temp=x>y?x:y; temp=temp>m?temp:m; System.out.println (temp); } }

A.1

B.12

C.13

D.11


正确答案:C

第5题:

下面程序段的输出结果为 package test; public class A { int x=20; static int y=6; public static void main(String args[]) { Class B b=new Class B(); b.go(10); System.out.println(”x=”+b.x); } } class Class B { int x; void go(int y) { ClassA a=new ClassA(); x=a.y; } }

A.x=10

B.x=20

C.x=6

D.编译不通过


正确答案:C
解析:本题考查在Java中静态变量(类变量)的用法。在题目程序段中生成了一个staticinty=6类变量,在ClassA中调用的b.go(10),只不过是在ClassB中的一个局部变量,通过调用ClassB中的go方法可以生成一个ClassA对象,并给这个新生成的对象赋以ClassA中的类变量y的值。从main()方法作为入口执行程序,首先生成一个ClassB的对象,然后b.go(10)会调用ClassA,会给x和y赋值,x=a.y后,x值为6,再返回去执行System.out.println(”x=”+b.x)语句,输出为x=6,可见,正确答案为选项C。

第6题:

执行下面程序,显示的结果为( )。 public class Test { public static void main (String args[]) { Test t=newTest(); System.out.println (Loverload ("2","3")); } int overload (intx,int y) {return x+y;} String overload (String x,Stnng y){return x+y;} }

A.2

B.3

C.5

D.23


正确答案:D
解析:本题考查方法重载相关知识。方法的重载是指多个方法可以享用相同的名字,但参数的数量或类型必须不完全相同、即方法体有昕不同。使用该方法时,编译系统会根据实参类型选择执行相应的方法。本题中,在调用overload()方法时,实参为字符串,因此会调用String overload (String x,String y)方法,该方法返回两实参连接后的结果,所以返回值为“23”。

第7题:

有如下程序: include class x { protected: int a; public:x(){ a=1;} }; class x

有如下程序: #include <iostream.h> class x { protected: int a; public: x() { a=1; } }; class x1 : virtual public x { public: x1() { a+=1; cout<<a; } }; class x2 : virtual public x { public: x2() { a+=2; cout<<a; } }; class y : public xl,public x2 { public: y() { cout<<a<<end1; } }; int main() { y obj; return O; } 该程序运行后的输出结果是( )。

A.1

B.123

C.242

D.244


正确答案:D
解析:本题程序中引入了虚基类。在主函数main中,执行语句“yobj;”时,先执行虚基类x的构造函数,使a=1;然后执行类x1的构造函数,使a=2,并输出值2;再执行类x2的构造函数,使a=4,并输出值4;最后执行类y的构造函数,输出值4。

第8题:

下列程序运行后的输出结果是( )。#include#includeusing namespace std;class Person{public:Person(string n):name(n) { cout<<'P'; }private:string name;};class Date{public:Date(int y=2012,int m=12,int d=21):year(y),month(m),day(d) { cout<<'D'; }

private:int year,month,day;};class Student:public Person{public:Student(string n,int y,int m,int d,char c):birthday(y,m,d),sex(c),Person(n) { cout<<'S'; }private:Date birthday;char sex;};int main(){Student stu1("Zhang",1990,10,1,'F');return 0}

A. S

B.PS

C.DPS

D.PDS


参考答案:D

第9题:

下面程序输出的结果是( )。 include using namespace std; class A{

下面程序输出的结果是( )。 #include<iostream> using namespace std; class A{ int X; public: A(int x):x(++x){} ~A(){cout<<x;} }; class B:public A{ int y; public: B(int y):A(y),y(y){} ~B(){cout<<y;}; }; void main(){ B b(3); }

A.34

B.43

C.33

D.44


正确答案:A
解析:对象创建的次序为:先基类,后派生类;析构时,先派生类,后基类。

第10题:

下列程序的输出结果是______。 include class base { int x,y; public: base(int i,i

下列程序的输出结果是______。

include<iostream.h>

class base

{

int x,y;

public:

base(int i,int j){x=i;y=j;}

virtual int add( ){return x+y;}

};

class three:public base

{

int z;

public:

three(int i,int j,int k):base(i,j){z=k;)

int add( ){return(base::add( )+z);}

};

void main( )

{

three*q=new three(10,20,30);

cout<<q->add( )<<endl;

}


正确答案:60
60 解析:本题考察继承中子类对父类的继承方式,注意子类的add成员函数,它直接使用了父类的成员函数进行运算。

更多相关问题