2016-09-25 2 views
1

私はJava Certificationのために勉強しています。char型を出力すると、何も得られません。

char c = 65; 
System.out.println(c); //Prints "A" 

をし、次の例では、この行:

char seven = 7; //number, cause it's not in single quotes 
System.out.println(seven); // doesn't print anything 

私はなぜ理解していなかった私はそれを読んでいる本の中で書かれている行があります。誰か説明できますか?

+0

Javaの 'char'(s)は整数型です。 [asciiテーブル](http://www.asciitable.com/)も参照してください。 –

+0

あなたは、ASCIIを見ていると誤解を招き、学習方法に合っていない可能性があります。人々は1つのエンコーディングで簡単な文字セットを提供しています。現代の多くの言語と同様に、JavaはUnicodeとそのUTF-16エンコーディングをStringとcharに使用します。ファイルとストリームは、しばしばUnicodeのUTF-8エンコーディングを使用します。 'char'は1つのUTF-16コードユニットを格納します。 (これはJavaの文書全体にあります。)何らかの理由で何人かの人々は誤解を招く「ASCII値」と呼んでいます。 –

答えて

2

charタイプは、UTF-16文字コード単位であり、整数は文字コードです。 ASCIIの場合、65はA、7はBEL(またはBELL)です。何も印刷されないが、可聴音が鳴ります。 here

ベル文字は、ユーザーに警告するために可聴ベルまたはトーンを鳴らすために使用される制御コードです(ASCII 7、EBCDIC 2F)。ベル文字はASCII制御文字、コード7(^ G)です。プリンタや端末に送信された場合、何も印刷されませんが、代わりに可聴信号が出力されます。

また、ASCIIテーブルhereを表示することもできます。

+0

"' char'型の場合、整数はシステムに基づいて文字コードとして扱われます ":これはfalseです。 Javaの 'char'はUTF-16コード単位です。 'int'から' char'への変換はその値を保持します。 –

+0

@TomBlodget編集された、感謝の気持ち – Li357

2

整数をcharに割り当てると、ASCIIの値が文字に設定されます。値7のASCII文字は何も印刷できません(BEL)。それで何も印刷されないのです。

0

あなたの文字の数字は16進数で、ASCIIテーブルから来ます。 "7"は "制御記号"です。 記号がありません。

テーブルを見てください。

「65」はあなたのAです。

1

Javaはユニコードを使用して文字を表します。 ASCIIとして知られている標準文字セットは、常に0から127の範囲で使用され、Unicodeでは他の国際言語をサポートするために必要な余分な文字のサポートが追加されています。

linkで与えられるように、65-90はA-Zのためのコードであり、97-122はa-zのためのコードであり、他の文字のコードもある。これらの数字の周りを再生すると、プログラムは印刷可能なすべての文字を印刷します。 ASCII 7は印刷できないので、プログラムは2番目の印刷ステートメントのために何も印刷しません。

+0

"international"という言葉のニットピックアップ:Unicodeは、1カ国だけで使用される言語のためのシステムをサポートしています(例えば、Tagalog)。現在の国もありません(たとえば、スーメリアン)。 –

関連する問題