首页 > 编程语言 >Java中a+=b和a=a+b的区别

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

时间:2022-12-09 16:03:01浏览次数:45  
标签:操作数 short Java 区别 int 类型 public


在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);

    }

}

Java中a+=b和a=a+b的区别_操作数

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

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

public classDemo

{

    public static void  main(String[] args)

    {

        short a=4;

        a=a+5;

        System.out.println(a);

    }

}


Java中a+=b和a=a+b的区别_数据类型_02


可以从截图中看出在使用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);

    }

 

}


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


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

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




标签:操作数,short,Java,区别,int,类型,public
From: https://blog.51cto.com/u_15907770/5926144

相关文章

  • 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
    要讲清楚范式,就先讲讲几个名词的含义吧:部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。举个例子:学生基本信息表R中(学号,......
  • UML类图、类、接口、聚合、组合的区别
    在UML类图中:类、接口、聚合、组合的UML表示1)类用空心三角实线连接2)接口用空心三角虚线连接3)聚合关系用空心菱形实线连接4)组合用实心菱形实线连接类:表示子类与父类的继承......
  • Java-interrupt方法的一个小的注意点
    Java-interrupt方法的一个小的注意点记录Java中interupt()方法的一个小的知识点。开发过程中,经常有需要去终止线程,终止线程的方式无外乎有两种标志位或interrupt()......
  • 【Java基础】12.9习题(封装,继承)
    水仙花数importjava.util.*;//万能头publicclassMain{publicstaticvoidmain(String[]args){for(inti=100;i<1000;i++){......
  • Java使用Steam流对数组进行排序
    原文地址:Java使用Steam流对数组进行排序-Stars-One的杂货小窝简单记下笔记,不是啥难的东西sorted()方法里传了一个比较器的接口Filefile=newFile("D:\\temp\\db_ba......
  • 直播app开发,页面跳转的几种方法和区别
    直播app开发,页面跳转的几种方法和区别1.保留当前页面,可跳转到非tabBar页面,使用uni.navigateBack可以返回到原页面(可传参) uni.navigateTo({url:'test?id=1&name=uni......
  • java概述
    1.java概述1.1java发展史​1995年,Sun发布JDK1.0。​1998年,JDK1.2,后续接连JDK1.3,1.4,1.5,更名为Java5,最新版本为OracleJDK17于2021年发布。JDK17是LTS版本,J......
  • java获取链接数据
    java获取链接数据packagecom.dongao.test;importcom.alibaba.fastjson.JSON;importcom.dongao.project.common.util.HttpPostUtil;importjava.util.*;/***@ClassName:......
  • java.io.InvalidClassException异常解决
    java.io.InvalidClassException异常解决​​1.什么是serialVersionUID​​​​2.java.io.InvalidClassException产生原因?​​​​3.java.io.InvalidClassException解决方案......
  • Java中new Long(String s)和Long.valueOf(String s)的区别
    想要知道newLong(Strings)和Long.valueOf(Strings)的区别,还是得从源码直接看比较直观newLong(Strings)Long.valueOf(Strings)从源码可以看出,使用newLong(s)和Long.v......