日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】探究自增运算符++的原理

發布時間:2025/3/15 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】探究自增运算符++的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

薦讀

C語言里++能隨便用嗎
j=j++到底是什么
a++ + ++a到底是什么

i++與++i

看下面的兩組代碼:

public class IntegerPlusTest {public static void main(String[] args) {int i = 1;System.out.println(i++);} } public class IntegerPlusTest {public static void main(String[] args) {int i = 1;System.out.println(++i);} }

其實打了反匯編以后看看這兩份Code,信息是一樣的。
其實想想也合理,畢竟C/C++都可用++,更何況Java,肯定都封裝好了啊!

從結果上說,二者分別輸出1, 2,如果按照剛剛學習編程的理解來看,我們一般被告知這樣一件事:
i++先加1后執行,++i先執行后加1。

其實這樣是不對的,如果有先后順序的話,循環中使用j=j++,j的值就會變了,可惜沒變。

那篇文章中我大致提出一種設想,即i++、++i分別是兩個是底層內置函數,基本可以認為是原子操作了,但原子操作可以使用代碼表示。這里就把這種想法展開成代碼說一下:

i++:

int function1(int i) {int j = i;i = i+1;return j; }

++i:

int function1(int i) {return i+1; }

之前一直聽ACMers說特別是很多次循環中, ++i 比 i++ 快一些,大概我們就能理解了。
絕不是一個先后順序的問題,而是 i++ 實際上多生成了一個變量,而且使用C函數模擬的話核心代碼行數是3:1,可見 i++ 稍復雜一些。
不過不需要超高效率的情況下,二者都差不多啦!

學會善用++

其實在讀很多比較np的代碼的時候,就發現Coder的位運算、三目運算符、++這種用的很爽。
沒錯,++的效率確實較高,能寫出更高效、更簡潔的代碼,還是值得研究的。

但我還是覺得不要濫用,像我舉的那兩種例子:

j=j++; j++ + ++j;

這種寫法其實真的不必……

我想告訴一些在讀大學生:不要被你的老師隨便整的那種亂七八糟的題亂了心神,做題歸做題,掌握知識歸掌握知識,但平時可別一上頭就濫用一坨++,沒人看得懂。。。
其實好的大學應該是不會弄那么無聊的東西的吧

話說當時我院C++選修課,老師寫了一個i+++++i;,沒分隔,結果CE了,挺有趣的哈哈哈(絕對絕對絕對不是嘲笑老師,而是這確實不建議濫用)哈哈

總結

以上是生活随笔為你收集整理的【Java】探究自增运算符++的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。