- ~
类Parent和Child定义以下:java
1 .class Parent{ 2. public float aFun(float a, float b) { } 3 .} 4 .class Child extends Parent{ 5 . 6 .}
将如下哪一种方法插入行5是不合法的。( )并发
正确答案: A
A float aFun(float a, float b){ }
B public int aFun(int a, int b) { }
C public float aFun(float p, float q){ }
D private int aFun(int a, int b){ }eclipse
方法重写应遵循“三同一小一大”原则: “三同”:即方法名相同,形参列表相同,返回值类型相同; “一小”:子类方法声明抛出的异常比父类方法声明抛出的异常更小或者相等; “一大”:子类方法的访问修饰符应比父类方法更大或相等。 A选项是重写,可是默认访问修饰符比父类小,插入第五行编辑器会报错。 B、D不是重写。由于形参列表和返回值类型不一样,不知足“三同”。因此写在第五行以普通方法对待,插入第五行没有错误。 C选项知足重写的各项条件,是正确的重写,因此插入第五行没有错误
假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不多是()编辑器
boolean isOdd = false; for(int i=1;i<=2;++i) { if(i%2==1)isOdd = true; else isOdd = false; a+=i*(isOdd?1:-1); }
正确答案: D
A -1
B -2
C 0
D 1spa
易知:每一个线程对a 均作了两次读写操做,分别是 “ +1 ” 和 “ -2 ” 而题目问了是最终a 的结果,因此 a 的结果取决于各自线程对 a 的前后读写的顺序 结论:a的可能取值为-一、0、-2
假设两线程为A、B,设有3种状况: 1.AB不并发:此时至关于两个方法顺序执行。A执行完后a=-1,B使用-1做为a的初值,B执行完后a=-2 2.AB彻底并发:此时读写冲突,至关于只有一个线程对a的读写最终生效。相同于方法只执行了一次。此时a=-1 3.AB部分并发:假设A先进行第一次读写,获得a=1;以后A的读写被B覆盖了。B使用用1做为a的初值,B执行完后a=0
若须要定义一个类,下列哪些修饰符是容许被使用的?( )
正确答案: A C D 你的答案: A D (错误)
A static
B package
C private
D public线程
这题只说定义一个类,可是没有说这个类是普通外部类或者内部类。 由于普通类也就是外部类,经过 eclipse 的警告“Illegal modifier for the class Test; only public, abstract & final are permitted” 可知只能用 public, abstract 和 final 修饰。 内部类则能够用 修饰成员变量的修饰符修饰内部类,好比 private, static, protected 修饰。