【340天】我愛刷題系列099(2018.01.11)

叨叨兩句

  1. ~

牛客網——java專項練習078

1

類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選項知足重寫的各項條件,是正確的重寫,因此插入第五行沒有錯誤

2

假設 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

3

若須要定義一個類,下列哪些修飾符是容許被使用的?( )
正確答案: 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 修飾。
相關文章
相關標籤/搜索