以下のコードで、バイナリ数値昇格のロジックを教えてください。バイナリ数値昇格のロジック
boolean flag = 'A' < 'a';
System.out.println(flag);// prints true.
以下のコードで、バイナリ数値昇格のロジックを教えてください。バイナリ数値昇格のロジック
boolean flag = 'A' < 'a';
System.out.println(flag);// prints true.
Javaでは、char
プリミティブデータ型は、16進数の範囲が0x0000
から0xFFFF
までの16ビットUnicode文字として定義されていました。 2つのchar
の値を比較すると、その16ビットの16進値が使用されます。あなたの特定のケース、A
で
は0x0061
で0x0041
とa
で表されるので、'A' < 'a'
はtrue
と評価されます。
しかし、バイナリ数値昇格はこれに適合していますか? –
@ AJ-この例では実際にはありません。これは、シーンの背後にある数値データによって表される 'char 'の単なるケースです。宣伝は必要ありません。たとえば、int型とlong型の値を比較すると、宣伝が行われます。 –
2つの異なるタイプ(通常は数字)を比較し、そのうちの1つを比較して比較できるようにすることをプロモーションと呼びます。以下のような:Javaのint
で
int x = 5;
double y = 6;
if (x < y)
...
とdouble
を比較することができます。その場合、int
は暗黙的にdouble
に変換されます。
あなたの場合、宣伝はありません。数字としてメモリに格納された文字(JavaではUTF-16標準に基づいており、short
のように正確に2バイトとして格納されます)と'A' < 'a'
の整数が比較されます。
なぜ昇格があると思いますか?私は2つの引数がcharであり、よく定義された順序を持っていると思います。 –
私はjavaの本でそれを読んでいます。作家名Khalid a。ムガール –
これはあなたに役立つことを願っていますhttps://stackoverflow.com/questions/576302/what-is-numeric-promotion –