java自增的陷井
如題:
public class Test{
public static void main(String[] args){
int count = 0;
for(int i=0;i<10;i++){
count = count++;
}
system.out.println("count="+count);
}
}
此段代碼輸出結果為0,而不是10。
count++ 是一個表達式,是有返回值的,它的返回值就是自加前的值,java對自加是這樣處理的:首先把count 的值拷貝到一個臨時變量區,然後對count 變量加1,最後返回臨時變量區的值。
因此,上述代碼的執行流程是:①jvm 把count 值拷貝到臨時變量區;②count 值加1,這時候count 值是1;③返回臨時變量區的值,註意這個值是0,沒修改過;④返回值賦給count,此時,count 值被重置為0。
經過一次循環之後,count 值仍為0,以後每次循環都是如此,最終,無論循環多少次,count 值始終都是0。
本文出自 “BrightAries” 博客,謝絕轉載!
java自增的陷井
相關推薦
java自增的陷井
java 自增如題:public class Test{ public static void main(String[] args){ int count = 0; for(int i=0;i<10;i++){ count = count++;
Java 自增(++) 和 C語言中自增的區別
%d 區別 但是 [] .cn cnblogs 微軟雅黑 自增 華麗 在Java、c語言等高級語言中自增和自減的作用基本一致,都是變量自身加一或減一。下面我只對自增進行說明,自減是類似的。 自增運算符(++),有兩種書寫形式,一個是在變量前: ++ num; 另一種
java自增運算
ria public 引用 如果 print sta 表達 target void 記得大學剛開始學C語言時,老師就說:自增有兩種形式,分別是i++和++i,i++表示的是先賦值後加1,++i是先加1後賦值,這樣理解了很多年也沒出現問題,直到遇到如下代碼,我才懷疑我的理解
java自增自
++a,a++ * --a,a– * a必須是整型或浮點型,自增和自減屬於單目用算符 * ++a,在使用變數a之前,先自加,即a=a+1 * a++,在使用變數a之後,在自加,即a=a+1 * 同理 * --a,在使用變數a之前,先自減,即a=a-1 * a–,在使用變數a之後,在自減,即a
【碼農每日一題】Java 自增自減運算子神坑筆試題
問:下面程式的執行結果是什麼?int count =0;for(int i=0; i<100; i++){ count = count++;}System.out.println("count="+ count);答:執行結果是 count = 0。首先 coun
java自增流水號(日期+隨機數)
<pre name="code" class="java">/** * @描述 java生成流水號 * 14位時間戳 + 6位隨機數 * @作者 shaomy * @時間:2015-1-29 上午10:57:41 * @引數:@return
Java自增和自減操作符——++/--的那些事
說明 align 面試 程序 nbsp double 之前 div 概述 1. 概述 自增操作符(++)和自減操作符(--)是對變量進行加1和減1的操作。 2.分類說明 ++和--是對變量進行自增1和自減1的簡寫操作符。許多編程任務中經常需要對變量
java生成自增流水號,並從每月第一天重新清零計數(原創)
equals code ext 數據庫操作 get color mage 隨機數 static 如果你不想在數據庫操作的話,這裏有個方法可以一試,直接上代碼: package com.seawin.common.util.convert; import java.te
Twitter的分布式自增ID算法snowflake (Java版)
開發 使用 ++ fin form 數據中心 mes protected mov 概述 分布式系統中,有一些需要使用全局唯一ID的場景,這種時候為了防止ID沖突可以使用36位的UUID,但是UUID有一些缺點,首先他相對比較長,另外UUID一般是無序的。 有些時候我們希
Java運算符使用總結(重點:自增自減、位運算和邏輯運算)
運算 計算器 可讀性 過多 移位運算 style avi 學會 new Java運算符共包括這幾種:算術運算符、比較運算符、位運算符、邏輯運算符、賦值運算符和其他運算符。(該圖來自網絡) 簡單的運算符,就不過多介紹使用了,可自行測試。關於賦值運算,可以結合算術運
java基礎(二) 自增自減與貪心規則
java基礎引言??JDK中提供了自增運算符++,自減運算符--。這兩個操作符各有兩種使用方式:前綴式(++ a,--a),後綴式(a++,a--)。可能說到這裏,說不得有讀者就會吐槽說,前後綴式都挺簡單的,前綴式不就是先進行+1(或-1),然後再使用該值參與運算嘛,後綴式則相反。有必要長篇大論嗎???前後綴
java入門---運算符&算術運算符&自增自減運算符&關系運算符&位運算符
[] 前綴 span public 粘貼 區別 gson sdn 表示 計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。我們可以把運算符分成以下幾組: 算術運算符 關系運算符 位運算符 邏輯運算符 賦值
JAVA 生成不重複訂單號 優化版本 訂單號格式為yyyymmdd後面自增
@Service("orderNumberDubbboServiceImpl") public class OrderNumberDubbboServiceImpl implements OrderNumberDubbboService { private static Logger
JAVA 學習(一):16進位制字串自增的實現
JAVA學習系列,並不是從基礎去講java的知識,而是把我在學習或是工作中,一些思想、邏輯總結出來。 原先在工作中,因為測試的需要,經常要往資料庫中批量的插資料。而表的主鍵用的是UUID,是由16進位制字元加“-”組成的,還有裝置的mac地址是由16進位制字元加“:”組成的,那個時候,我剛學ja
Java筆試題——if條件判斷、自增運算子
1.if條件判斷 結果 分析: if條件判斷中,flag = true先是一個賦值語句,賦值完成後,flag成為邏輯判斷條件,會自動拆箱。 2 .自增運算子 3 .自動拆箱裝箱問題 結果分析: 在基本資料型別和包裝類的比較中,Java會自動進行拆
java中實現MongoDB主鍵自增
java中實現MongoDB主鍵自增 1.定義序列實體類SeqInfo: 儲存每個集合的ID記錄 //@Document 把一個java類宣告為mongodb的文件,可以通過collection引數指定這個類對應的文件 @Document(collection = "se
【Java】sql實現插入,插入值的主鍵自增,防止遷移資料時報主鍵衝突的錯誤;
一、問題 我們要自己造一些測試資料,並且這些SQL指令碼要遷移到其他環境,遷移過程中,如果主鍵寫死,在其他環境,可能會出現主鍵衝突;所以,我們要寫活的主鍵,實現起來也很簡單; 二、解決方法 insert into userInfo(id,name,age)val
Twitter的分散式雪花演算法 SnowFlake 每秒自增生成26個萬個可排序的ID (Java版)
分散式系統中,有一些需要使用全域性唯一ID的場景,這種時候為了防止ID衝突可以使用36位的UUID,但是UUID有一些缺點,首先他相對比較長,另外UUID一般是無序的。 有些時候我們希望能使用一種簡單一些的ID,並且希望ID能夠按照時間有序生成。 而twit
java基礎 int變數自增 效率問題
本文論述java中以下三條語句的效率問題。 1. i++; 2. i = i+1; 3. i += 1; 所採用的的方法是隻寫出包含這三條語句的方法,編譯成位元組碼,然後分析位元組碼指令。 下面是我的java原始碼: public
java趣談(2)說說自增那些事
最近,做題的時候經常遇到自增的問題,就此總結整理一下一、常見情況自增方式有兩種:前置和後置,即i++和++i,它們的不同點在於i++是在程式執行完畢後進行自增,而++i是在程式開始執行前進行自增,示例如下:public static void main(String[] ar