JAVA深入解析-36个话题-Two

此文转载自:https://my.oschina.net/u/3429810/blog/4767828

## 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.浮点相除与求余运算各种情况下的结果。

    - 浮点相除

  1.  俩个操作数(被除数和除数)只要有一个为NaN,结果就是NaN。                
  2. 当俩个操作数都为Infinity或者都为0时(不论符号正负),结果为NaN。
  3. 当结果(商)不是NaN是,商的符号与被除数和除数的符号有关,当二者符号相同时,符号为正;当二者符号不同时,符号为负。
  4. 有穷数除以Infinity,商为0(商的符号根据第3点)
  5. Infinity除以有穷数,商为Infinity(商的符号根据第3点)
  6. 有穷数或Infinity除以0,商为Infinity(商的符号根据第3点)
  7. 0除以有穷数或Infinity,商为0(商的符号根据第3点)

3.熟知浮点类型值+0与-0的区别

   

更多内容详见微信公众号:Python测试和开发

Python测试和开发

原文地址:https://www.cnblogs.com/phyger/p/14068516.html