java深入解析-第2章 运算符与表达式

1、编译器在分析字符时,会尽可能多地结合有效字符。并且“过度”地贪心,而不管这种结合方式是否符合语法规则。如i+++j会处理为(i++)+j;然而a–b会处理a– b,编译出错。
2、贪心规则是有用的,因为这样可以对转义字符等进行特殊处理。
3、前置++与后置++都是先将变量的值加1,而不是前置++先加1然后运算,而后置++先运算后加1。
4、从程序上说,后置++先将变量赋值给一个临时变量,然后将变量的值加1,接下来使用那个临时变量参与运算。
5、从指令上说,后置++在执行增值指令钱,先将变量的值压入栈,执行增值指令后,使用的是之前压入栈的值。
6、表 除数为0的浮点运算

被除数除数输出结果
正数(float类型)0(float类型)InfinityFloat.POSITIVE_INFINITY
负数(float类型)0(float类型)-InfinityFloat.NEGATIVE_INFINITY
0(float类型)0(float类型)NaNFloat.NaN
正数(float类型)0(double类型)InfinityDouble.POSITIVE_INFINITY
负数(float类型)0(double类型)-InfinityDouble.NEGATIVE_INFINITY
0(float类型)0(double类型)NaNDouble.NaN

注意:NaN不等于任何值,因此,不能使用“==”运算符来判断一个值是否是NaN,而是使用Float(Double)类的isNaN方法。
7、表 除法相除运算

被除数\除数有穷正数有穷负数+0-0Infinity-InfinityNaN
+0+0-0NaNNaN+0-0NaN
-0-0+0NaNNaN-0+0NaN
Infinity-InfinityInfinityInfinityNaN+0-0NaN
-Infinity-InfinityInfinity-InfinityInfinityNaNNaNNaN
NaNNaNNaNNaNNaNNaNNaNNaN

8、在整型中,+0和-0没有任何的区别,但是在浮点类型中,尽管+0与-0在数值上是相等的,使用“==”运算符,结果也为true,不过二者还是有区别的,区别体现在:

  • 当+0与-0参与浮点类型的相关运算时,可以产生不同的结果(符号的差别)。
  • +0与-0在浮点类型变量存储中,符号位是不同的。
  • 某些类会吧浮点类型的+0与-0视为完全不同的两个数值来处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值