• Java中a+=b和a=a+b的区别


     

    在Java语言中a+=b和a=a+b是有区别的,主要的区别是在运算时精度的问题,当然了-=、*=、/=,%=也都是一个道理。这里以a+=b和a=a+b为例做说明。

             (1)下面以一段Java程序为例,试一试a+=b的形式:

    public classDemo

    {

        public static void  main(String[] args)

        {

            short a=4;

            a+=5;

            System.out.println(a);

        }

    }

    可以看出这段程序的结果是9,程序没有问题的。需要明确的是“+=”这个运算符在Java中是一个运算符,而不是两个,程序在执行“+=”时,会自动向高精度进行数据类型转换。所以上面的程序在执行时编译器没有报错。

    (2)下面试一试a=a+b的形式:

    public classDemo

    {

        public static void  main(String[] args)

        {

            short a=4;

            a=a+5;

            System.out.println(a);

        }

    }


    可以从截图中看出在使用a=a+b的形式时出现了问题,因为a是short类型的变量,而5默认为int类型的变量,short类型+int类型结果肯定会自动转换成int类型啦,

    此时就存在数据类型不一致的问题,用short类型的变量去保存int类型的变量编译器当然会报错了,就好比你用装一两水的杯子去装二两水,

    当然是装不下的,如果你非要用装一两水的杯子去装二两水,肯定可以硬到进去,但是肯定会洒掉一部分水。所以如果这里非要用short类型的变量去装int类型的数据,可以用强制转换,确定是会丢失精度。

    以下是强制转换后的结果:

    public classDemo

    {

        public static void main(String[] args)

        {

            short a=4;

            a=(short)(a+5);

            System.out.println(a);

        }

     

    }


    (3)总结一句,这两种形式的主要区别在于是否进行数据类型的自动转换,当两个操作数同类型时这两种形式的运算结果是没有差别的,当两个操作数数据类型不同时,

    且左操作数即保存结果的操作数的数据精度要低,此时这两种形式才有区别。

  • 相关阅读:
    sql中table用法
    sql group by
    C#excel导入
    手写简单JDBC
    连接池+事务
    mysql+jdbc
    mysql(多表)
    jsp标签+jstl
    页面跳转+路径问题
    ajax 动态获取数据库中的值
  • 原文地址:https://www.cnblogs.com/myf008/p/8504256.html
Copyright © 2020-2023  润新知