关闭→
当前位置:科普经验站>IT科技>a++和++a的区别 java

a++和++a的区别 java

科普经验站 人气:1.07W
<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 #