你還記得自增(++)和 自減(——)嗎?

在程序員生涯中,更多IT技術乾貨歡迎大家鎖定"朗妹兒"公眾號每天都有更新哦~我們在編寫代碼時,時常會用到 ++ 和 --, 對於這些特殊的運算符的含義和用法,你是否真明白這些運算符的含義?

在編碼過程中,我們經常會使用 i=i+1(或則 i=i-1 )。

i=i+1; // 表示 變量 i+1的值重新賦值給變量 i(也就是 i 自動增加 1 );

i=i-1; // 表示 變量 i-1的值重新賦值給變量 i(也就是 i 自動減 1 );

在編程語言中存在著一種特殊的運算符,

自增運算符(++) 和 自減運算符(--),這種特殊的運算符則用來表示 變量的 自增 1 或則 自減 1。

例如:

i++ 則表示 i=i+1 (也可以把i++ 看做為 i=i+1的簡寫方式)

i-- 則表示 i=i-1 (也可以把i– 看做為 i=i-1的簡寫方式)

自增(++): 將變量的值加1,它分為 前綴式( 如 ++i )和 後綴式( 如 i++ )自減(--): 將變量的值減1,它分為 前綴式( 如 --i )和 後綴式( 如 i-- )

運算符采用 前綴式和後綴式 對本身的影響都是一樣的,都是加1或者減1。(也就是說: ++i 和 i++ 都表示 i=i+1)

但是 當把他們作為其他表達式的一部分,兩者就有區別了

。如:前綴式: j = ++i 表示先運算,再賦值。後綴式: j = i++ 表示先賦值,再運算。

先看一段代碼(前綴式)

你還記得自增(++)和 自減(——)嗎?

再看一段代碼(後綴式)

你還記得自增(++)和 自減(——)嗎?

自減(--)作為 其他表達式的一部分與 自增(++) 一樣,這裡我就不重複舉例了。

再看看下面這段代碼

這段代碼運算後 i=?, j=?, k=?

答案為: i=10, j=22, k=22

如果你回答正確了,那說明你對 自增(++)和 自減(--) 運算符 已經算是掌握了。

分析一下上面的代碼

你還記得自增(++)和 自減(——)嗎?

最後得出答案為:i=10, j=22,k=22;

再問一個問題?

下面這段代碼能編譯通過嗎?

你還記得自增(++)和 自減(——)嗎?

如果你回答可以,那麼你已經掌握了 自增(++) 和 自減(--)運算符了。

答案為: f=2.1 d=3.1 c=b

自增與自減運算符還遵循以下規律 :

1. 可以用於整數數據類型byte、short、int、long,浮點類型float、double,以及字符類型 char。

2. 在Java5.0及以上版本中,它們可以用於基本類型對應的包裝器類Byte、Short、Integer、Long、Float、Double、Character。

3. 它們的運算結果的類型與被運算的變量的類型相同。

關於面試題

來看看面試題的代碼:

你還記得自增(++)和 自減(——)嗎?

也許你的第一反應和我一樣, j=100;

你還記得自增(++)和 自減(——)嗎?

結果答案: j=0 ;

原來這是因為Java編譯器使用了中間緩存變量的機制

java的編譯器在遇到i++和i–的時候會重新為變量運算分配一塊內存空間,以存放原始的值,而在完成了賦值運算之後,將這塊內存釋放掉。

首先看一下如果是 j = i++ 的情況:

你還記得自增(++)和 自減(——)嗎?

所以上圖的操作等於如下操作

你還記得自增(++)和 自減(——)嗎?

我們再看看 j = j++ 的情況

你還記得自增(++)和 自減(——)嗎?

所以 最後一次循環後的 j 還是等於 0;

因此對於自增(++)、自減(--)運算符的變量進行賦值時都需要特別注意。

如果在程序中只輸入i++就不會出現這個方面的問題,所以大家在以後的程序中如果使用到i=i++的時候要格外小心,一般只需要用 i++ 就不會有問題了。


分享到:


相關文章: