2016-06-13 10 views
0

これは愚かな質問のように感じますが、Javaのドキュメントのどこにでも答えが見つかりません。 2つのintを宣言して分割すると、どういうことが起こっていますか?最初にfloats/doublesに変換され、分割されてからintegerにキャストされるか、または整数として除算されますか?Javaの整数除算

また、純粋に実験から、整数除算は答えをゼロに向かって丸めるように見える(すなわち、3/2 = 1および-3/2 = -1)。私はこれを信じていますか?

+0

変換が行われません。それらはintとして分割されます。そして '-3/2 == -1'。 –

+0

http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.2.2 – azurefrog

+0

単純な考え方は分割されており、完全なintは切り捨てられます。 –

答えて

5

整数演算で分割されています。したがって、整数aを整数bで割り算すると、baに何回入られますか?またa % bはあなたに部門の残りの部分を与えます。 。

「それはダブルスにint型をautoconvertsそれにはint型を使用すると、短いまたはバイト算術演算を行いたい時に一定の迷惑なキャストを必要とし、関与していなくてもint型にショートパンツやバイトをautoconverts:だから(a/b) * b + a % b = a

1

Javaは自動変換のタイプを行います。ボクシングとオートボクシングのために、プリミティブをラッパーに、またその逆に自動変換します。 " - user2357112

Java は指定なしで何かをキャストします。

でもまだinteger/integer = integerです。

また、結果は常に切り捨てられます。したがって、結果がfloatとして0.999999の場合、整数除算は0を返します。

+0

いいえ、常に*の方向に丸めます。 –

+0

私はそれを意味した、ごめんね –

+0

私はあなたが切り捨てを意味すると信じています –