java a++和++a的区别

作者:原创时间:2022-03-23
文档

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、查看控制主键的代码

  1. 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

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
茉莉花茶是绿茶吗 java active 瓮安县属于哪个市 java activiti java activity 西北五省是哪五省 java actuator java add java addall java advice java aes加密 java aggregation java akka ipad2是哪年的 java algorithm iphone呼叫失败是什么原因 java android java annotation java ant java apns 熊猫只有中国才有的吗 idea新建一个java项目 java 32bit java -xms idea新建java项目 祁连山在哪个省境内 行程码带*号什么意思 南极洲有哪些国家 java -ea 铁观音产地是哪个地方 iterator java interface java integer java instant java instance java influxdb java idea编写java程序 idea怎么建立java idea创建普通java项目 idea创建java