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值更新到表中
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以上就是小编今天的分享了,希望可以帮助到大家。