3

次のような Java フラグメントがあります。

    char ch = 'A';
    System.out.println("ch = " + ch);

印刷:A

それから私がこれをするとき

    ch++; // increment ch
    System.out.println("ch =" + ch);

現在は次のように表示されます: B

私もそれを試してみましたがZ、結果は[ (開き角括弧)
になり-、結果は.


どうしてそうなった?これについて考えられる説明は何ですか?前もって感謝します。

4

5 に答える 5

9

文字 0 ~ 127 については、ASCII 文字セットに従います。

ここに画像の説明を入力

ご覧のとおり、(90) の後の文字Zは (91)[で、(45) の後の文字-は (46) です。.

試す

char ch = '-';
ch += '-'; // == (char) 90 or 'Z'

またはさらに奇妙な

char ch = '0';
ch *= 1.15; // == (char) 48 * 1.15 = 54 or '6'
于 2013-06-25T07:11:35.710 に答える
3

これは、'char' が本質的に数値であり、入力した各文字が数値で表される Unicode 形式であるために発生します。これは、文字を足し算や引き算など、数値と同じように扱うことができることを意味します。

特定のマッピングの詳細については、こちらを試してください

于 2013-06-25T07:11:00.807 に答える
1

データ型は、単一のchar16 ビット Unicode 文字です。最小値は '\u0000' (または 0) で、最大値は '\uffff' (または 65,535 を含む) です。charリテラルは実際には Unicode を表す数値であるため、リテラルに対して算術演算を実行できます。

于 2013-06-25T07:11:49.937 に答える
1

実際にはASCII値を増やしています。s の値は 65 なので、66 は B です。ここでも、Z の値は 90 で、[ は 91 です。

于 2013-06-25T07:12:06.307 に答える
1

Char文字の数値表現があります。intlikeにキャストしようとするとint a = (int) 'A';、char コードが得られます。値をインクリメントすると、char下に移動しASCII table、次のテーブル値を取得します。

于 2013-06-25T07:13:57.860 に答える