IT科技

當前位置 /首頁/IT科技 > /列表

a++和++a的區別,java

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java a++和++a的區別是什麼,讓我們一起了解一下?

java a++和++a的區別是a++先參與程序的運行,後賦值+1給變量a,++a先賦值+1給變量a,後參與程序的運行。相同點:都是幫當前變量 +1。

舉個例子來説:

public static void main(String[] args) {        int a = 1;        System.out.println(a++);  // 先參與程序的運行,而後才進行賦值,所以輸出為  1;        System.out.println(a);    // 上一步操作已經+1; 所以輸出為 2;        System.out.println(++a);  // 先進行賦值(先+1),後參與程序的運行,所以輸出為 3;    }

實際應用:

1、設想一個背景

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

2、查看控制主鍵的代碼

value = rs.getInt("value");  //從記錄主鍵值的表中獲取當前的value值modifyValueField(conn,tableName,value++);  //將加1後的value值更新到表中

java a++和++a的區別

3、分析

從代碼中可能大家都看出來了,關鍵就在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<a.length; i++){undefined         System.out.println(a[i]);}
TAG標籤:java #