ちょうど今、私は「charはJavaで唯一の符号なし整数プリミティブ型です」と読みました。これは、charがJavaの整数型の1つであることを意味しますか?
Cと同じように、最近、C型にはスカラー型、関数型、共用体型、集計型が含まれ、スカラー型にはポインター型と算術型が含まれ、算術型には整数型と浮動小数点型、整数型が含まれることを読みました。列挙型と文字型を含みます。
char型は、JavaとCの両方で実際に整数として分類できますか?
はい、achar
は、それが表示されるすべての一般的な言語で整数型です。「積分」とは、そのスペクトルが離散的であり、任意の 2 つの異なる値の最小差が であることを意味します1
。サポートされる値の必要な範囲は、通常、他の整数型の範囲と比較して非常に小さいです。コンピュータ ハードウェアは伝統的に整数を基本的なデータ型として扱います。対照的に、算術浮動小数点型は最近追加された、より複雑な型です。
@aioobeの答えに似ています
int n = 5;
char ch = (char) '0' + 5; // '5'
またはその逆
char ch = '9';
int i = ch - '0'; // 9
または珍しい
char ch = 'a';
ch += 1; // 'b';
または奇数
char ch = '0';
ch *= 1.1; // '4' as (char) (48 * 1.1) == '4'
ch %= 16; // `\u0004`
int i = ch; // 4
ところで: String.hashCode() から
// int h = 0;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
Java Primitive Data Typesチュートリアルによると:
char : char データ型は、単一の 16 ビット Unicode 文字です。最小値は '\u0000' (または 0) で、最大値は '\uffff' (または 65,535 を含む) です。
そうです、これは 16 ビットの符号なし整数です。型を使用して数字を表すか文字を表すかはあなた次第です...
char
、Java では型が 16 ビットであることが保証されていますが、C が課す唯一の制限は、型が少なくとも 8 ビットでなければならないということです。この回答のC仕様参照によると:
ビットフィールド (バイト) ではない最小オブジェクトの最大ビット数
CHAR_BIT 8
したがって、char
C の a は、必ずしもchar
Java の a と同じ範囲の整数値を表すとは限りません。
整数型の正式な定義はわかりませんが、要するに、char
整数を表すと見なすことができるため、はい、Java の整数型です。
たとえば、次のことができます
char c1 = 'a' + 'b';
char c2 = 5;
char c3 = c2 + 3;
int i = c3;
char c4 = (char) i;
等々。
メモリでは、基本的にすべてが不可欠です... しかし、そうです。char は、C、C++、および Java の整数型です。
C 仕様では、char型を 1 バイト整数として実装する必要があります。他のタイプの仕様は必ずしも明確ではありません。たとえば、Kernigan と Ritchie C のオリジナルの本では、さまざまな実装の中でshortとlongに関する限り、 shortは long よりも長くないという事実にのみ依存できると述べています。