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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中 a_java中 a++ 和 ++a

發布時間:2024/4/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中 a_java中 a++ 和 ++a 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:

在完成DRP項目的一個添加功能時,主鍵通過id生成器自動控制。當所有的代碼完成后,執行添加時,報錯了“java.sql.SQLException: ORA-00001: 違反唯一約束條件(DRP1.PK_T_CLIENT)”,意思是要插入的主鍵值已存在。

代碼:

查看控制主鍵的代碼

value = rs.getInt("value"); //從記錄主鍵值的表中獲取當前的value值

modifyValueField(conn,tableName,value++); //將加1后的value值更新到表中

分析:

從代碼中可能大家都看出來了,關鍵就在value++這個參數。

java中的運算符有前置++ 和后置++,二者是有區別的。

Int a =1;

i=a++;? 表示先將a的值賦值給i,然后a自身再加1.??? 計算結果為:i=1,a=2

i=++a; 表示a先自加1,然后再賦值給i。?????????????????? 計算結果為:i=2,a=2

所以,實際上傳入的參數value++的值還是原來的值,這就必然導致插入重復的主鍵值。將參數改成++value 或者在傳參之前先進行一次value++,然后直接傳value參數都是對++的正確應用。代碼表示:

value = rs.getInt("value"); //從記錄主鍵值的表中獲取當前的value值

modifyValueField(conn,tableName,++value); //將++value作為參數傳遞

或者

value = rs.getInt("value"); //從記錄主鍵值的表中獲取當前的value值

value++; //vaue值自增1

modifyValueField(conn,tableName,value); //將新的value值更新到表中

其實,這是一個基礎問題,但是今天還是在這里摔了一跤,主要還是因為沒有仔細區分過這個知識點。之前,在寫代碼的時候總是會出現a++(常見的for循環中),寫習慣了導致這里上來也就寫a++。現在,再回頭看一下那段代碼,其實,如果當時好好分析一下,估計今天這個錯誤也能避免了。

int a[] ={1,2,3,4,5};

for(int i=0; i

System.out.println(a[i]);

}

a++和++a本質上的區別:

前置++不會產生臨時對象

后置++在返回時有一個臨時對象的創建(a++ 相當與a先創建自身的一個副本,然后a自增1,最后返回副本的值)

在前置++和后置++ 效果相同的時候,最好使用前置++

總結

以上是生活随笔為你收集整理的java中 a_java中 a++ 和 ++a的全部內容,希望文章能夠幫你解決所遇到的問題。

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