SCJP程序员认证考试

单选题import java.util.*;  class KeyMaster {  public int i;  public KeyMaster(int i) { this.i = i; }  public boolean equals(Object o) { return i == ((KeyMaster)o).i; }  public int hashCode() { return i; }  }  public class MapIt {  public static void main(Str

题目
单选题
import java.util.*;  class KeyMaster {  public int i;  public KeyMaster(int i) { this.i = i; }  public boolean equals(Object o) { return i == ((KeyMaster)o).i; }  public int hashCode() { return i; }  }  public class MapIt {  public static void main(String[] args) {  Set set = new HashSet();  KeyMaster k1 = new KeyMaster(1);  KeyMaster k2 = new KeyMaster(2);  set.add(k1); set.add(k1);  set.add(k2); set.add(k2);  System.out.print(set.size() + “:”);  k2.i = 1;  System.out.print(set.size() + “:”);  set.remove(k1);  System.out.print(set.size() + “:”);  set.remove(k2);  System.out.print(set.size()); }  }  What is the result?()
A

 4:4:2:2

B

 4:4:3:2

C

 2:2:1:0

D

 2:2:0:0

E

 2:1:0:0

F

 2:2:1:1

G

 4:3:2:1

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

第1题:

能将程序补充完整的选项是______。 class Person{ private int a; phblic int change(int m){return m;} } public class Teacher extends Person{ public int b; public static void main(String arg[ ]){ Person p=new Person( ); Teacher t=new Teacher( ); int i; ______; } }

A.i=m

B.i=b

C.i=p.a

D.i=p.change(50)


正确答案:D
解析: 选项B中虽然b是类Teacher的public成员变量,但在静态方法中,不能使用类中的非静态成员;选项C中的a是Person类的private成员,不能在类外直接引用;选项D中的change(int m)方法是public方法,并且返回一个int型值,可以通过类的实例变量p引用并赋值给一个int型变量。

第2题:

若类A和类B的定义如下

class A

{

int i,j;

public:

int geti( )

{

return i;

}

};

class B:public A

{

int k:

public:

void make( )

{

k=i*j;

}

};

则上述定义中非法的语句是

A.k=i*j

B.int k;

C.return i;

D.void make()


正确答案:A
解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

第3题:

能将程序补充完整的选项是( )。class Person{ private int a; public int change(int m){ return m; }}public class Teacher extends Person{ public int b; public static void main(String arg[]) { Person p = new Person(); Teacher t = new Teacher(); int i; ______ }} B.

A.i=m

B.i=b

C. i=p.a

D.i=p. change(50)


正确答案:D

第4题:

若类A和类B的定义如下:includeclass A{int i*j;public:int geti(){return i;}};class

若类A和类B的定义如下: #include<malloc.h> class A { int i*j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j; } ); 则上述定义中非法的表达式是( )。

A.k=i*j;

B.int k;

C.return i;

D.void make();


正确答案:A
解析:因为派生类不能访问基类的私有成员i和j(默认情况下,成员的属性为私有),所以表达式k=i*j是非法的。其余的访问权限都是许可的。

第5题:

若类A和类B的定义如下: class A { int i,j; public: int geti () { return i; } }; class B : public A { int k; public: void make () { k=i*j; } }; 则上述定义中非法的语句是

A.k=i*j;

B.int k;

C.return i;

D.void make()


正确答案:A
解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

第6题:

顺序执行下面的语句后,输出的结果是______。

public class exl6

{

public static void main(String[] args)

{

int i;

int a[] = new int[10];

for(i = O; i < a.length; i++)

a[i] = i * 10 + j;

for(i = 1; i < a.length; i++)

if(a[i]%5 == O)

System,out.println(a[i]);

}

}


正确答案:55
55

第7题:

下列程序的功能是为变量赋值,程序运行后,输出i=51。请改动main方法中的错误,使程序能够正确编译、运行并输出正确的结果。

注意:不改动程序结构。

class A

{

private int a;

public void setA (int x)

{

a=x;

}

public int getA()

{

return a;

}

}

public class MethodTest

{

public static void main(String args[])

{

A a=A();

a.getA(51);

int i=a.getA();

System.out.println ("i="+i);

}

}


正确答案:改正后的main方法如下: public static void main(String args[]) { A a=new A(); a.getA(51); int i=a.getA(); System.out.println("i="+i); }
改正后的main方法如下: public static void main(String args[]) { A a=new A(); a.getA(51); int i=a.getA(); System.out.println("i="+i); } 解析:本题综合考查类及类成员的定义与使用方面的知识。该程序中定义了两个类:A和MethodTest,类A中封装了一个私有的成员变量a和两个公有的方法setA和getA。在类MethodTest中包含了main方法。创建对象应使用new操作符来实例化对象,程序在创建对象a时未使用new,故存在错误。由于a是对象a的私有变量,在main方法中不能直接访问,只能通过对象a的公有方法setA和getA来访问。公有方法setA的功能是将传递回来的参数值赋给a,所以应当调用setA方法来为变量a赋值。

第8题:

若类A和类B的定义如下:includeclass A{int i,j;public:int geti(){return i;}};class

若类A和类B的定义如下: #include<malloc.h> class A { int i,j; public: int geti() { return i; } }; class B:public A { int k; public: void make() { k=i*j; } }; 则上述定义中非法的表达式是( )。

A.k=i*j

B.int k;

C.return i;

D.void make();


正确答案:A
解析:因为派生类不能是基类的私有成员i和j(默认情况下,成员的属性为私有),所以表达式k=i*j是非法的。其余的访问权限都是许可的。

第9题:

有以下程序inclube class ClassOne{public: ClassOne(int v=O) { i=v;cout<

有以下程序 #inclube <iostream.h> class ClassOne { public: ClassOne(int v=O) { i=v;cout<<i;} void print(){ cout<<i<<end1;} }; class ClassTwo { public: ClassTwo(int v=O) { i=v;cout<<i;} void print(){ cout<<i<<end1;} private: ClassOne myObj; int i; }; void main() { ClassTwo obj(1); obj.print(); }

A.11

B.111

C.110

D.101


正确答案:A
解析:类ClassTwo中定义了成员对象myObj,所以在构造类ClassTwo的对象obj时会先调用类ClassOne的构造函数输出0,然后调用ClassTwo的构造函数输出1。主函数最后调用obj的成员函数print()输出1。所以最后结果为011。

第10题:

若类A和类B的定义如下: class A [ int i,j; public: int geti() { return i; } }; class B:public A { int k; public: void make() { k=i*j; } }; 则上述定义中非法的表达式是

A.k=i*j

B.int k;

C.retum i;

D.void make()


正确答案:A
解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

更多相关问题