Java では、char プリミティブが暗黙的に int プリミティブに変換されるのはなぜですか? 2 バイトの char が 4 バイトの int に収まる拡大変換が原因だと人々は言いますが、ブール値はどうでしょうか? ブール値は確かに 2 バイト未満しか占有しませんが、暗黙的に変換されることはありません。
質問する
841 次
3 に答える
1
ブール値は数値データ型ではないため、暗黙的な変換は定義されていません。
しかし幸いなことに、ブール値を任意の int に変換するのは簡単です。
int value = b ? 1 : 2; // if b is true, value will be 1, else 2.
于 2013-09-28T22:21:09.413 に答える
1
Java 開発者は、Boolean が int 型に暗黙的に変換されることを望んでいませんでした。これは、C 言語ではあいまいだったためです。この質問を見てください
于 2013-09-28T22:24:47.350 に答える
0
char に対して演算子が定義されていないため、char から int への変換が必要です。最初に int に変換しないと、char が別の文字より大きいかどうか、または char が指定された範囲内にあるかどうかを確認できません。
同じことが JVM レベルのブール値にも当てはまります。違いは、これらの操作を行う必要がないことです (true > false は少し恣意的なようです) が、文字エンコーディングの変換や大文字と小文字の変換などを実装するには、char に対する操作が必要です。変換。
于 2013-09-29T09:50:40.193 に答える