3

質問が明確に表現されているかどうかはわかりませんが、例がより明確になります。

Javaでは機能しないことがわかりました:

int a = ...;
a = 5.0;

しかし、これは:

int a = ...;
a += 5.0;

つまり、= 演算子は型安全であるように見えますが、+= はそうではありません。これには深い理由があるのでしょうか、それとも言語設計者が取らなければならない別の恣意的な決定に過ぎないのでしょうか。

4

2 に答える 2

5

その理由は、数学演算がいくつかの暗黙のキャストを行うためです。

a += 5.0;は次のように評価されます。

a = (int) ((double) a + 5.0);

ただし、代入には明示的なキャストが必要です。

(double ではなく float である可能性があります。どの Java が 10 進リテラルとして扱われるかは覚えていません。)

于 2009-02-26T15:02:52.647 に答える