我想澄清一些關於Java中的三元運算符的疑問。Java三元運算符:與ART相似的行爲類似於可能的(彙編)嗎?
在Java中,它看起來像:x =(c?a:b)。從我閱讀和經歷的看來,它似乎被作爲if/else的分支來執行,這意味着只有一個語句被評估(a或b,但從來都不是)。我想知道它是否真的如此。
在C中,它可能會被編譯成有條件的移動時,其評估兩個表達式a和b。
是準確的,我想知道,如果它的Android代碼的也是如此。在安裝到具有最新操作系統的設備上時,知道Java字節碼實際上已轉換爲本機指令(請參閱Android Runtime(ART))。在ART之後出現有條件的移動是否有風險?
讓我們舉一個例子。一個基本類,其中將包括:
//class content
int victoriesA = 0;
int nonVictoriesA = 0;
int totalCalls = 0;
//...class content
public int getIncrementedCounter(int goalsA,int goalsB){
totalCalls++;
return (goalsA > goalsB ? ++victoriesA : ++nonVictoriesA);
}
public boolean testOpertor(){
return (totalCalls == victoriesA + nonVictoriesA);
}
如果getIncrementedCounter是一個程序的執行過程中多次調用,將功能testOperator始終返回true? (假設代碼運行在單個線程上運行)
我知道,我應該只使用if/else分支就一定要走出困境,但我仍然不知道....
謝謝你的鏈接。 – Gordak