Java中的整数除法

Mad*_*nty 9 java

这感觉就像一个愚蠢的问题,但我无法在Java文档中的任何地方找到答案.如果我宣布两个整数然后除以它们,到底发生了什么?他们是转换为floats/doubles第一,分裂,然后转回一个integer,还是作为整数"完成"?

而且,纯粹来自实验,整数除法似乎将答案舍入为零(即3/2 = 1-3/2 = -1).我是否正确地相信这一点?

小智 14

他们被划分为整数算术.因此简单地将整a的整数b你多少次b适合a.同时a % b会给你一个除法的余数.所以(a / b ) * b + a % b = a


Sim*_*ten 12

Java 会自动转换类型:

“它自动将整数转换为双精度数。即使不涉及整数,它也会自动将短整数和字节转换为整数,当你想要进行短整数或字节算术时,需要不断进行烦人的转换。它自动将原语转换为包装器,反之亦然,用于装箱和自动装箱。” - 用户2357112

如果没有您指定,Java永远不会强制转换任何内容。

但还是integer / integer = integer

此外,它总是会截断结果。因此,如果结果为 0.999999 作为浮点数,整数除法仍将返回 0。

  • “Java 永远不会在没有您指定的情况下强制转换任何内容”- 完全可以。它自动将整数转换为双精度。即使不涉及整数,它也会自动将短型和字节转换为整数,当您想要进行短型或字节算术时,需要不断进行烦人的转换。它将原语自动转换为包装器,反之亦然,用于装箱和自动装箱。 (5认同)