摘要:在牛客網做題遇見了這道題,又勾起了我對和的無限怨念,所以今天要搞懂它輸出結果為原先的理解為是先賦值,然后再自增是先自增,后賦值。
在牛客網做題遇見了這道題,又勾起了我對i++和++i的無限怨念,所以今天要搞懂它
@Test public void test(){ int i = 0; i=i++; System.out.println(i); //輸出結果為0 }
原先的理解為:
i++是先賦值,然后再自增;++i是先自增,后賦值。 用代碼表示就是: 若 a = i++; 則等價于 a=i;i=i+1; 而 a = ++i; 則等價于 i=i+1;a=i;
但是牛客網的題打破了我的幻想, 如果按原先定義,就應該是i=i;i=i+1; 那么結果就應該是1;但是很遺憾結果是0;所以得知原先定義有誤,至少是不準確的。 這個是為什么呢?
我簡單用代碼模擬如下真實流程:
int i; @Test public void testAddI() { i = 0; i = lastAdd(); System.out.println(i); i = 0; i = firstAdd(); System.out.println(i); } //模擬i++的機制 public int lastAdd() { //操作i前對其值保留副本 int temp = i; i = i + 1; //返回副本 return temp; } //模擬++i的機制 public int firstAdd() { i = i + 1; return i; }
輸出結果為0和1,和i=i++以及i=++i的結果一致。
結論:在java的執行過程中,i++和++i都直接對i進行了i=i+1的操作,但是不同的是i++得到的是i未進行加法操作的前的值的副本,而++i直接得到計算后的值
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74495.html
摘要:舉個例子,如果你的數組中有一個可枚舉屬性,循環將額外執行一次,遍歷到名為的索引。就連數組原型鏈上的屬性都能被訪問到。某些情況下,可能按照隨機順序遍歷數組元素。 困惑 在練習數組操作的時候,希望實現刪除數組中特定元素(比如刪除字符1)的功能很容易地就想到了利用for循環和splice方法 for (let i = 0; i < hobbies.length; i++) { ...
摘要:文章目錄前言一循環體中兩者的作用循環語句語句循環語句語句循環語句語句二語句總結前言本文將通過簡單的實例來詳細分析在語言中語句和語句的用法和區別,歡迎大家批評指正。 ...
摘要:大家好,我來自駕考寶典。同時,我在駕考寶典也工作一年多了。駕考寶典算不上一線大公司,但我個人不管是通過工作,平常的積累,還是自主學習,我覺得還是能和大家分享一些更加實戰化的面試題。并處理好廣大安卓機的兼容性。 大家好,我來自駕考寶典。時間不知不覺進入2018金九銀十,下半年的尾聲了,想必很多朋友已經看過網上新出的各大廠面試題。同時,我在駕考寶典也工作一年多了。駕考寶典算不上一線大公司,...
摘要:大家好,我來自駕考寶典。同時,我在駕考寶典也工作一年多了。駕考寶典算不上一線大公司,但我個人不管是通過工作,平常的積累,還是自主學習,我覺得還是能和大家分享一些更加實戰化的面試題。并處理好廣大安卓機的兼容性。 大家好,我來自駕考寶典。時間不知不覺進入2018金九銀十,下半年的尾聲了,想必很多朋友已經看過網上新出的各大廠面試題。同時,我在駕考寶典也工作一年多了。駕考寶典算不上一線大公司,...
閱讀 3904·2021-11-22 09:34
閱讀 1490·2021-11-04 16:10
閱讀 1721·2021-10-11 10:59
閱讀 3271·2019-08-30 15:44
閱讀 2036·2019-08-30 13:17
閱讀 3445·2019-08-30 11:05
閱讀 744·2019-08-29 14:02
閱讀 2618·2019-08-26 13:34