【问题标题】:implicit cast or normal cast when dividing 2 ints?划分 2 个整数时是隐式转换还是正常转换?
【发布时间】:2014-03-01 05:08:24
【问题描述】:

使用强制类型转换或隐式类型类型进行 int 除法在性能上是否存在差异

例如。

         int a = 7;
         int b = 3;


      float x = ((float)a)/b;

      or

      float y = (a+0f)/b;

【问题讨论】:

    标签: java casting int


    【解决方案1】:

    正如 cmets 所指出的,由于运算符优先规则,这两个版本是不同的。

    float y = a + 0f / b;
    

    实际上等价于

     float y = a + (0f / b);
    

     float y = a;
    

    你应该写的

     float y = (a + 0f) / b;
    

    只要你得到正确的运算符优先级,在语义上或性能方面没有区别。 (JIT 编译器极有可能优化掉人为添加的零。)

    但是,有一个重要的区别。您的第二种形式是不寻常习语,不寻常的习语会使其他人更难阅读您的代码。最好以“正常”方式编写代码……如果您(或您的老板!!)预计其他人可能需要阅读/维护它。

    (如果您养成错误操作运算符优先级的习惯,他们可能需要比您预期的更快地阅读您的代码...... :-))

    【讨论】:

      猜你喜欢
      • 2015-03-16
      • 2014-11-15
      • 1970-01-01
      • 2021-06-11
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      相关资源
      最近更新 更多