i++和++i

今天作了一道題,代碼以下:java

packagealgorithms.com.guan.javajicu;
public class Inc {
public staticvoid main(String[] args) {
Incinc = newInc();
inti = 0;
inc.fermin(i);
i=i ++;
System.out.println(i);ci

}
void fermin(inti){
i++;
}
}it

要求輸出的是什麼?這裏樓主作錯了- -羞恥,所以今天圍繞這道題來說一講。class

首先這道題有兩個陷阱。第一,java是屬於值傳遞的,代碼中的i屬於基本數據類型,所以方法中的i只是外面i的一個副本,對它操做並不會對外面的i的值帶來變化;其次,就是罪惡之源i=i++了,這裏樓主剛開始並無想太多,直接寫了輸出1,看了答案瞬間才反應過來= =。i++和++i不一樣,前者是先把當前i拿出來賦值給聲明的變量i=i,而後再i+1,加1以後並無賦值操做,也就是說前面這道題i輸出仍是等於0;後者是先i=i+1,而後再賦值給聲明的變量i=i,若是這道題改爲i=++i,那麼輸出就是1了。變量

以上就是今天的小知識點,最後想對你們說,作題必定要思考一會- -,別覺得很簡單,有時候會有雙重陷阱甚至更多,所以,作題需謹慎- -。數據類型

Add:1.如下這道題輸出什麼呢?方法

int a = 0;數據

for(int i = 0;i<99;i++){static

  a = a++;思考

}

System.out.println(a);

2.如下這道題又輸出什麼呢= =?

Integer a = 0;

int b = 0;

for(int i = 0;i<99;i++){

 a = a++;

b = a++;

}

System.out.println(a);

System.out.println(b);

 

知道的朋友在評論裏說出來吧,並說明爲何哦。

相關文章
相關標籤/搜索