「こんにちは、アミーゴ!」

「こんにちは、エリー!」

「今日は機嫌がいいので、何か面白いことを話したいと思います。Java の型システムがプリミティブ型をどのように扱うかから始めます。」

" Java では、各オブジェクトと各変数には、あらかじめ設定された変更不可能な型があります。プリミティブ変数の型はプログラムのコンパイル時に決定されますが、オブジェクトの型は作成時に決定されます。新しく作成されたオブジェクトおよび/または変数の型存続期間中は変更されません。例を次に示します。」

Javaコード 説明
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b– 整数の除算を表します。答えは2つです。除算演算の余りは単に無視されます。
int a = 13;
int b = 5;
int d = a % b; // d == 3
daによる整数除算の余りが格納されますb。余りは3です。

「覚えておく必要がある興味深いニュアンスがいくつかあります。」

「まず、参照変数は、常にそれと同じ型の値を指すとは限りません。」

「第 2 に、2 つの異なる型を持つ変数が相互作用する場合、最初に同じ型に変換する必要があります。」

「割り算はどうですか? 1 を 3 で割ると、0.333(3) が得られます。そうですよね?」

「いいえ、そうではありません。2 つの整数を割ると、結果も整数になります。5 を 3 で割ると、答えは 1 になり、余りは 2 になります。そして、余りは無視されます。」

「1 を 3 で割ると 0 になります (リマインダー 1 は無視されます)。」

「でも、0.333 を取得したい場合はどうすればよいでしょうか?」

「Java では、除算を実行する前に、浮動小数点数 1 (1.0) を乗算して数値を浮動小数点 (小数) 型に変換するのが最善です。」

Javaコード 説明
int a = 1/3;
a0になります
double d = 1/3;
 d 0.0になります
double d = 1.0 / 3;
d0.333(3)になります
double d = 1 / 3.0;
d0.333(3)になります
int a = 5, b = 7;
double d = (a * 1.0) / b;
d0.7142857142857143になります

"とった。"