选择题
- 类声明中,声明抽象类的关键字是 (B )
A.public
B.abstract
C.final
D.class - Java中的集合类包括ArrayList、LinkedList、HashMap等,下列关于集合类描述错误的是?©
A.ArrayList和LinkedList均实现了List接口
B.ArrayList的访问速度比LinkedList快
C.随机添加和删除元素时,ArrayList的表现更佳
D.HashMap实现Map接口,它允许任何类型的键和值对象
解析;
ArrayList是基于数组实现的,所以查询快,增删慢;LinkedList是基于链表实现的,所以查找慢,增删快。 - 以下关于Object类的说法正确的是(A)
A.Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。
B.Java中的接口(interface)也继承了Object类
C.利用“==”比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。
D.如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。
解析:
Object 是基类 Java中的所有的类都直接或间接的继承;所以A对从一个class派生的必然是另一个class。Object是一个class,如果interface继承自Object,那么interface必然是一个class,所以B错,利用equals()方法进行比较时 会调用== 可以看equals()方法的源码,可以这样说,== 比equal更加强大,所以C错,toString()方法是Object类中 即使不重写也能使用 所以D错.
- 如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? (C )
A.void use() { …}
B.protected void use() { …}
C.public void use() { …}
D.以上语句都可以用在类SmallCup中
解析:
既然是实现接口,就要实现接口的所以方法,相当于重写方法,方法的重写需要满足:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前) - 一个文件中的字符要写到另一个文件中,首先需要(C )。
A.使用标准输出流System.out.println()。
B.建立文件字符输出流。
C.建立文件字符输入流。
D.标准输入流System.in.read()。
解析:
一个文件中的字符要写到另一个文件中,首先需要读取这个文件,所以要先建立输入流,然后写到另一个文件,这时再建立输出流.所以要先建立输入流,再建立输出流. - 类A1和类A2在同一包中,类A2有个protected的方法testA2,类A1不是类A2的子类(或子类的子类),类A1可以访问类A2的方法testA2。(A )
A.正确
B.错误
解析:
- 指出下来程序运行的结果是(B)
A.good and abc
B.good and gbc
C.tst ok and abc
D.tst ok and gbc
解析:
实参和形参的问题。"ex.change(ex.str, ex.ch)"语句调用"change"方法时,将ex.str变量(实参)的值赋给了"change"方法中的str变量(形参),而将ex.ch(实参)的地址赋给了"change"方法中的ch(形参)。"change"方法运行时,第一条语句改变的是方法中形参的值,对实参没影响,第二条语句由于是直接改变的ch所指地址的值,所以把实参也进行了改变。 - Which lines of the following will produce an error?(A)
- byte a1 = 2, a2 = 4, a3;
- short s = 16;
- a2 = s;
- a3 = a1 * a2;
A.Line 3 and Line 4
B.Line 1 only
C.Line 3 only
D.Line 4 only
解析:
byte+byte=int,低级向高级是隐式类型转换,高级向低级必须强制类型转换,byte<char<short<int<long<float<double。
-
有关静态初始化块说法正确的是?(ABC)
A.无法直接调用静态初始化块
B.在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化
C.静态初始化块既没有访问修饰符,也没有参数
D.在程序中,用户可以控制合适执行静态初始化块
解析:
JAVA的初始化顺序:
父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注意:
1.静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。
2.上述的是通用的加载顺序,如果没有则省略。 -
Java.Thread的方法resume()负责重新开始被以下哪个方法中断的线程的执行(D)。
A.stop
B.sleep
C.wait
D.suspend
解析:
resume与suspended一起使用
wait与notify(notifyAll)一起使用
sleep会让线程暂时不执行