原子操作(atomic operation)__局部變數-類變數

來源:互聯網
上載者:User

1 關於C++/Java 中的static成員和對象成員的說法正確的是()

A static 成員變數在對象的構造時產生;
B static成員函數在對象的成員函數中無法調用;
C 虛成員函數不可能是static成員函數
D static成員函數不能訪問static成員變數

註解: 首先:所謂的成員函數和成員變數都是類中的成員函數;
A static成員函數是在類的載入時產生,即就是說: 是在建構函式之前產生的;
B static成員函可以被類的成員函數訪問, 但static不可以訪問類的成員函數,因為其沒有this指標,即是無法復原的;
靜態可以訪問靜態,靜態不可以訪問非靜態
非靜態可以訪問靜態,非靜態可以訪問非靜態
C 虛成員在java中類似於是抽象方法,即抽象方法不可以用static, final,native synchronized private 來修飾.
static是沒有指標的,是類層級,所以抽象方法(虛方法)要用類的成員函數來實現,此時,如果用static修飾是很不合理的native是方法修飾符。Native方法是由另外一種語言(如c/c++,FORTRAN,彙編)實現的本地方法。因為在外部實現了方法,所以在java代碼中,就不需要聲明了,有點類似於介面方法。Native可以和其他一些修飾符連用,但是abstract方法和Interface方法不能用native來修飾。
答案C

2 What is the result?()
public class Test2 {

public static void main(String[] args) {    int x = 3;    int y = 1;    //if(x=y)    if(x==y)        System.out.println("Not Equal");    else        System.out.println("Equal");}

}

A The output is “Equal”
B The output is “Not Equal”
C An error at line 5 causes compilation to fail;
D The program executes but does not print a message

註解: 在Java 中if()括弧中只能是true或者 false而在該題中的括弧中是指派陳述式,會報錯,這正是和C++中的if的不同之處,C++中如果不是“==”,則會將括弧中的結果的:大於0的數轉化為true,而將小於0 的數轉換為false
答案: C
3 以下的多線程對int型變數的x的操作,哪個不需要進行同步()

A  ++xB  x=yC  x++D  x=1  

註解:考察的是原子操作:在多進程(線程)訪問資源時,能夠確保所有其他的進程(線程)都不在同一時間內訪問相同的資源。原子操作(atomic operation)是不需要synchronized,這是Java多線程編程的老生常談了。所謂原子操作是指不會被線程調度機制打斷
的操作;這種操作一旦開始,就一直運行到結束,中間不會有任何 context switch (切換到另一個線程),原子操作可以是一個步驟,也可以是多個操作步驟,但是其順序是不可以被打亂,或者切割掉只執行部分。
同步是害怕在操作過程的時候被其他線程也進行讀取操作,一旦是原子性的操作就不會發生這種情況。因為一步到位的操作,其它線程不可能在中間幹涉。另外三項都有讀取、操作兩個步驟,而X=1則是原子性操作。
例如:x++ 先從讀取變數x 放在寄存器中,再對寄存器中存放的數進進行操作++,然後再賦值給記憶體中的x。
答案:D
4 如下的描述中正確的是()
class Person
{

String name = "no name";public Person(String nm){    name = nm;}

}
class Employee extends Person
{

String emp = "xxxx";public Employee( String id) {    //super(id); //題中無此句    emp = id;}

}
public class Test4 {

public static void main(String[] args) {    Employee e = new Employee("123");    System.out.println(e.emp);}

}
A 輸出: xxxx
B 輸出 : 123
C 編譯錯誤
D 輸出: No name

註解:此題中:子類在執行構造方法之前先執行父類的構造方法,如果子類中沒有顯示調用父類的構造方法,此時,系統給會預設調用父類的無參的構造方法,但是:如果父類中自己定義了構造方法,此時,一定要通過子類傳參調用父類的構造方法,如果沒有顯示調用,此時,系統不會給我們提供調用父類的無參的構造方法。系統會報錯。答案: c
5 java 的構造器的說法正確的是()

A 構造器的傳回值是void
B 如果一個源檔案中有多個類, 那麼構造器必須與公用類同名
C 構造器可以有0,1,或多個參數
D 每一個類可以有一個以上的構造器
註解:答案: BC
構造方法可以重載
public class Test5 {

class test{    public test()    {}}class test2{    public test2()    {}}public static void main(String[] args) {}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.