zoukankan      html  css  js  c++  java
  • 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)总结一句,这两种形式的主要区别在于是否进行数据类型的自动转换,当两个操作数同类型时这两种形式的运算结果是没有差别的,当两个操作数数据类型不同时,

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

  • 相关阅读:
    趣图:程序员告诉你为什么充钱后速度更快
    金三银四铜五铁六,面试得做好这个准备
    Java中如何模拟真正的同时并发请求?
    趣图:程序员最头疼的原因
    Java并发面试题
    linux内存分配与回收
    7.3 Set集合
    7.2 Java 11新增的Collection和Iterator接口
    7.1 Java集合概念
    6.5 正则表达式
  • 原文地址:https://www.cnblogs.com/myf008/p/8504256.html
Copyright © 2011-2022 走看看