## Chapter-2
## i+++j=???
- 运算结合性
- 编译器的贪心规则
- 贪心的好处
1.三个加号相连是按照i++(+j)还是i+(++j)呢?这在C/C++中去杠是没有意义的,因为C/C++是基于现实的硬件结构的,不同的硬件环境有不同的结果。但在java却是有固定答案的,是先i++,然后+j。
2.编译器在分析字符时,会尽可能多滴结合有效字符。并且非常“贪得无厌”,不管这种结合方式是否合乎语法规则。
3.贪心规则是有用的,因为这样可以对转义字符等进行特殊处理。
## ++i与i++不仅仅是先加和后加的区别
- 对前置++和后置++的消费级理解
- 对前置++和后置++的企业级理解
- 利用伪指令去分析其中的差异
1.前置++与后置++都是先将变量的值加1,而不是前置++先加1然后运算,而后置++先运算后加1.
2.从进程上说,后置++现将变量赋值给一个临时变量,然后将变量的值加1,接下来使用哪个临时变量参与运算。
3.从指令上说,后置++在执行增值指令(iinc)前,现将变量的值压入栈,执行增值指令后,使用的是之前压入栈的值。
## 相除与求余
- 整型相除与求余运算
- 浮点类型相除与求余
- 浮点相除与求余运算的特殊情况
- 浮点值+0 与 -0的差别
1.浮点的相除与求余不同于整型的相除与求余运算,当除数为0时,浮点运算不会产生ArithmeticException异常。
2.浮点相除与求余运算各种情况下的结果。
- 浮点相除
- 俩个操作数(被除数和除数)只要有一个为NaN,结果就是NaN。
- 当俩个操作数都为Infinity或者都为0时(不论符号正负),结果为NaN。
- 当结果(商)不是NaN是,商的符号与被除数和除数的符号有关,当二者符号相同时,符号为正;当二者符号不同时,符号为负。
- 有穷数除以Infinity,商为0(商的符号根据第3点)
- Infinity除以有穷数,商为Infinity(商的符号根据第3点)
- 有穷数或Infinity除以0,商为Infinity(商的符号根据第3点)
- 0除以有穷数或Infinity,商为0(商的符号根据第3点)
3.熟知浮点类型值+0与-0的区别