文章目录
1.下面中哪两个可以在A的子类中使用:(AC )
class A {protected int method1 (int a, int b) {return 0;}}
A. public int method 1 (int a, int b) { return 0; }
符合子类重写父类方法的规则
B. private int method1 (int a, int b) { return 0; }
子类重写父类的方法,访问权限不能降低 public > protected > friendly> private
C. private int method1 (int a, long b) { return 0; }
属于重载
D. public short method1 (int a, int b) { return 0; }
子类重写父类的方法 返回值类型要相同或是父类方法返回值类型的子类
2.抽象方法不可以被static修饰
抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract是矛盾的,所以abstract是不能被修饰为static,否则就失去了abstract的意义了
3.以下程序的执行结果是什么?D
class Base{void test() {System.out.println(“Base.test()”);}}
public class Child extends Base {void test() {System.out.println(“Child.test()”);}
public static void main(String[] a) {
Child anObj = new Child(); ase baseObj = (Base)anObj; baseObj.test();}}
A Child.test() Base.test()
B Base.test() Child.test()
C Base.test()
D Child.test()
测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类的test方法,因此调用子类的test方法。
4.栈是一种存取受限的线性结构
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。
5. 下列程序的结果是什么?42
public static void main(String[] args) {
Object obj = new Object() {
public int hashCode() {
return 42;
}
};
System.out.println(obj.hashCode());
}
匿名内部类重写了hashCode方法。
6、下列程序执行结果是什么? 140
public class Text{
public static void main(String[] args){
int a=10,b=4,c=20,d=6;
System.out.println(a++b+c–d);
}
}
在java中执行加减乘除基本运算时,已就遵循先乘除后加减的原则,而++a与a++的区别在于,++a是先自增后在参与运算,a++是先参与运算之后在自增,所以最终答案是104+205=140
7、下列哪两个选项不能直接导致线程停止?
A. 跳出同步代码块
B. 调用wait方法
C. 调用notify方法
D. 调用读取流的方法
E. 设置线程的优先权
解答:AC
stop方法.这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放 所有他锁住对象上的锁。这会导致对象处于不一致的状态。 当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。被中断的线程会在安全的时候停止。
A、如果一个线程想进入一个已经被另外一个线程占用得同步代码块,这个线程会停止,但是这里说的是跳出
B、他能使当前线程停止,等待别人调用notify方法
C、放另外一个调用了wait方法得线程继续执行,自己也可以继续执行
D、这是典型的阻塞方法,线程等待知道确实有东西可读得时候才会去读
E、因为优先级改变了,JVM要重新选择优先级高得先执行,所以会短暂停止