4

次のJavaコード行はエラーを生成します。
Javaのデータ型は署名されていますが?

    char c = -128;  
4

9 に答える 9

12

Charは、Javaで署名されていない1つのデータ型です。その16ビットの符号なし整数。

于 2012-07-27T14:13:07.940 に答える
9

Javaデータ型のOracleチュートリアルから直接。

charcharデータ型は単一の16ビットUnicode文字です。最小値 '\u0000'(または0)と最大値'\uffff'(または65,535)があります。

于 2012-07-27T14:13:36.707 に答える
4

これは、-128がintであるためです。あなたはcharにキャストする必要があります。charはunsigned型であることに注意してください。

   char c = (char) -1;
    System.out.print(Integer.valueOf(c).toString());

65535を取得します

于 2012-07-27T14:14:27.327 に答える
1

の最小値'\u0000' (or 0)との最大値があり'\uffff' (or 65,535 inclusive)ます。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

于 2012-07-27T14:14:02.433 に答える
1

OracleJavaドキュメントによる

char:charデータ型は単一の16ビットUnicode文字です。最小値は「\u0000」(または0)、最大値は「\ uffff」(または65,535を含む)です。

charしたがって、実際に負の値を割り当てることはできずchar c = -128、エラーが発生します。
charに負の値を割り当てて型キャストしようとすると、その値がもう一方の(最大)端を介してローテーションされます。

char c;
c = (char) 65;    // 'A'
c = (char) -100;  // 'ワ' and it results in 65,535(inclusive) - 100 = (char) 65,436
c = (char) 65436; // 'ワ'

int i;
i = (char) 65;    // 65
i = (char) -1;    // 65535 : notice how the char value cycles through the other end
i = (char) -100;  // 65436 : same as (char) -100. Here, int returns 65,436.
于 2017-04-15T19:10:12.213 に答える
0

プリミティブの最小値または最大値について混乱した場合は、同等のオブジェクトを見つけて、MIN_VALUEまたはMAX_VALUE定数を探してください。例えば:

http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#MIN_VALUE

于 2012-07-27T16:39:49.070 に答える
0

キャスト:

char c = (char) -128;  

これはおそらくあなたが期待するように動作しないでしょうが。おそらく1バイトの方が良いでしょうか?

于 2012-07-27T14:14:39.903 に答える
0

charは16ビットの符号なしの値を保持します.charに整数を割り当てることができますが、2までの正の値は、0から開始するときに65536-1である16の累乗になります。

-ve値を割り当てる必要がある場合は、ビットの一部が緩んで型キャストする必要があります。この状況では、コンパイラは符号ビットを実際の値と一緒に格納し、最後のビットは削除されます。char c =(char)-128はコンパイルエラーを発生させませんが、ばかげた結果が得られます

于 2015-07-19T23:21:52.030 に答える
0

Character.isValidCodePoint(int codePoint)次のメソッドを使用して、int値が文字コードとして有効かどうかを確認することもできます。

boolean isValid = Character.isValidCodePoint(-128); // false

于 2019-06-06T04:54:09.290 に答える