java运算符

运算符

     1.1 整数除0将产生一个异常,而浮点数除0将会得到无穷大或NaN。

     1.2 自增和自减

         如: int m = 7;

                   int n = 7;

                   int a = 2 * m++; // a=14

                   int b = 2 * ++n;  // b=16

            建议表达式中不要使用这两个符号,这可能带来迷惑,并产生bug。

     1.3 &&和||按照短路方式求值

           如:x != 0 && 1 / x > x + y // 这样就不会发生除0的情况,因为x等于0的话,&&右侧的表达式将不会执行;||也是类似,当左侧为true的话,右侧表达式将不执行。

      1.4 位运算,这里说明的是它的效率很高,可以在一些要求效率的运算中如乘法,可以用位运算代替。

      1.4.1 &和|运算符号与&&和||运算非常类似,也应用于布尔值,得到的结果也是布尔值,只是不按“短路”方式计算。即两边的操作数都要计算结果。

      1.4.2 对移位运算符右侧参数需要进行模32的运算。除非左侧参数是long类型,才会进行模64.

           如:1 << 35和1 << 3 结果都是8;(long) 1 << 35 才不会溢出。

      1.4.3 >>> 将用0填充高位(逻辑移位);>> 用符号位填充高位(扩展符号位)。

   

     1.5 数值类型之间的转换

         1.5.1 如果两个操作数中有一个是double类型的,另一个就会转换double类型。

         1.5.2 否则,如果其中一个是float类型,另一个就会转换为float类型

         1.5.3 否则,如果其中一个是lang类型,另一个就会转换为long类型

         1.5.4 否则,两个数都被转换为int类型。

     1.6 强制类型转换:java允许double转换为int,当然可能会丢失一些信息;此时应该用()给出转换的目标类型,后面跟变量名。

         1.6.1 如果目标类型的表示范围与源目标差的太远,就会截断为一个完全不同的值。               如: (byte)300 结果为44。

        1.6.2 不要将boolean与其他类型进行强制类型转换,只有极少情况下可以使用以下方式转换:b ? 1 : 0。

 

posted @ 2017-04-09 19:19  玛旁雍错  阅读(131)  评论(0编辑  收藏  举报