2017-12-19 43 views
0

以下のコードで、バイナリ数値昇格のロジックを教えてください。バイナリ数値昇格のロジック

boolean flag = 'A' < 'a'; 
System.out.println(flag);// prints true. 
+0

なぜ昇格があると思いますか?私は2つの引数がcharであり、よく定義された順序を持っていると思います。 –

+0

私はjavaの本でそれを読んでいます。作家名Khalid a。ムガール –

+0

これはあなたに役立つことを願っていますhttps://stackoverflow.com/questions/576302/what-is-numeric-promotion –

答えて

3

Javaでは、charプリミティブデータ型は、16進数の範囲が0x0000から0xFFFFまでの16ビットUnicode文字として定義されていました。 2つのcharの値を比較すると、その16ビットの16進値が使用されます。あなたの特定のケース、A

0x00610x0041aで表されるので、'A' < 'a'trueと評価されます。

参考:Unicode (The Java Tutorials)

+0

しかし、バイナリ数値昇格はこれに適合していますか? –

+0

@ AJ-この例では実際にはありません。これは、シーンの背後にある数値データによって表される 'char 'の単なるケースです。宣伝は必要ありません。たとえば、int型とlong型の値を比較すると、宣伝が行われます。 –

0

2つの異なるタイプ(通常は数字)を比較し、そのうちの1つを比較して比較できるようにすることをプロモーションと呼びます。以下のような:Javaのint

int x = 5; 
double y = 6; 
if (x < y) 
    ... 

doubleを比較することができます。その場合、intは暗黙的にdoubleに変換されます。

あなたの場合、宣伝はありません。数字としてメモリに格納された文字(JavaではUTF-16標準に基づいており、shortのように正確に2バイトとして格納されます)と'A' < 'a'の整数が比較されます。