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

您所在的位置:网站首页 a与b的差额是a-b还是b-a JAVA中a+=b和a=a+b的区别

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

2024-07-09 22:52| 来源: 网络整理| 查看: 265

一、 a+=b和a=a+b的区别 public classDemo { public static void main(String[] args) { short a=4; a+=5; System.out.println(a); } }

程序运行结果是9,+=在java中是一个运算符,两个操作数使用运算符执行操作时候,如果类型不一致,则向高精度类型转换,当然没问题。(int比short精度高)

public classDemo { public static void main(String[] args) { short a=4; a=a+5;(a是short,5是int,【a+5】a自动转换成高精度int,{【a+5】=9,9是int类型},shrot a = int 9报错) System.out.println(a); } }

这段代码编译会报错,因为a+5,a和5的类型不一致,会使short转到int类型,然后把int赋值给精度比自己低的变量会报错。 总之,当类型不一致时,a+=b和a=a+b有区别,当类型一致时,他们没什么区别。

a -=b和a = a-b同理 精度

1、 基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 (-2的15此方) 最大值:Short.MAX_VALUE=32767 (2的15次方-1) 2、 基本类型:int 二进制位数:32 包装类:java.lang.Integer 最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方) 最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1) 3、 基本类型:long 二进制位数:64 包装类:java.lang.Long 最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方) 最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1) 4、 基本类型:float 二进制位数:32 包装类:java.lang.Float 最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方) 最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1) 5、 基本类型:double 二进制位数:64 包装类:java.lang.Double 最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方) 最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)

二、a++和++a的区别

在这里插入图片描述

答案是9和11 i++这个运算符是先参与运算然后自身的值再自加1++i这个运算符是先自加1然后再参与运算

    首先分析一下上面代码的执行流程,第一句输出语句输出的是i++根据我们刚才说的原理,它应该是先参与运算,也就是先输出结果9,输出结果后然后自加1变成了10,然后执行第二句输出语句输出++i,根据刚才说的++i是先自加,这个时候i的值为10,自加后就变成了11,输出结果就是11,所以上面的代码的执行结果为9和11。

总结:关于两者的区别大家记住一句话i++是先参与运算然后自加1,++i是先自加1然后参与运算

下面大家再看一道面试中的基础小题目,设x=1,y=2,z=3,则表达式y+=z–/++x的值是( )。 A. 3 B. 5 C. 4 D. 5 这个题目的答案是A 首先由于Java中运算符的优先级关系,z–是先参与运算,++x先自加1变成了2,z/x=3/2=1,y=y+1=2+1=3;所>以最后的结果为3,这个表达式执行完后各变量的值分别为y=3,x=2,z=2。

a++

class demo1 { public static void main(String[] args) { int a=20; int b=19; /* 先运算在赋值; 1. b先和a作比较,b比a小为假,所以a还是20; 2. b在自增加1,所以b为20; 3. 因为三元判断为假,所以c等于自增后的b加a为40; */ int c= b++>=a ? a++:a+b; System.out.println(a);//结果是:20 System.out.println(b);//结果是:20 System.out.println(c);//结果是:40 } }

++a

class demo1 { public static void main(String[] args) { int A=20; int B=19; /* 先赋值在运算; 1.B先自增为20; 2.三元运算自增后的B等于A,所以c等于20; 3.因为三元运算为真,所以A自增1为21; */ int C= ++B>=A ? A++:A+B; System.out.println(A);//结果是:21 System.out.println(B);//结果是:20 System.out.println(C);//结果是:20 } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3