除以2个整数时隐式演员或正常演员?

时间:2014-03-01 05:08:24

标签: java casting int

使用强制转换或隐式强制转换进行int分割是否存在性能差异

例如

         int a = 7;
         int b = 3;


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

      or

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

1 个答案:

答案 0 :(得分:3)

正如评论所指出的,由于运营商优先规则,这两个版本是不同的。

float y = a + 0f / b;

实际上相当于

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

 float y = a;

你应该写

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

如果您获得运算符优先级正确,则在语义上或在性能方面没有区别。 (JIT编译器极有可能优化零人工添加。)

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

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