2017-03-09 24 views
0

すべての低レベル言語のcharのサイズは1バイトです。だから、Javaがchar型のために2バイトのサイズをサポートするのはなぜですか?それは簡単かもしれませんが、私はあなたがサポートするように要請しているので、とても新しいjavaです。なぜjavaの文字サイズが2バイトですか?

おかげでJavaの文字」型で

+0

Unicodeを使用すると、実質的にすべての文字(すべての言語に存在する)をエンコードすることができます。 –

+0

文字のサイズは、使用するエンコード形式によって異なります。いくつかのフォーマットは2バイト以上を使用します。 1バイトのみを使用する場合、実際には古いASCIIに制限されます。より新しいスキームは、より多くの文字、より重要なことに、より多くの言語をサポートします。 – Aaron

+0

C++には複数の文字データ型があり、そのうちの1つだけが「少なくとも8ビット」として定義されています。あなたの主張は単に間違っています。 – v010dya

答えて

2

+4

まあ、*は* 2バイトでした。それから、彼らはそれが十分ではなく、それが[さらに複雑になる]ことを知った(http://stackoverflow.com/questions/5290182/how-many-bytes-does-one-unicode-character-take)。 – Kayaman

+0

はい、あなたはUNICODE文字について正しいですが、Javaプログラムの互換性を保つために、 'char'データ型は16ビットのままです。 https://docs.oracle.com/javase/tutorial/i18n/text/unicode.html – Luci

0

チャーが16ビットであるデータ構造であり、2バイトの長さであるUnicode文字を表します。従って、2バイト(それぞれ8ビット)は16ビットである。

+1

はい、問題は理由を知りたいと考えています。他の言語では、文字は1バイトの長さです(よく...通常、Unicodeがasciiに基づいて変化している可能性があります)。 Luciの答えを見てください。 – nasukkin

+1

'char'はJavaで常に16ビットの長さのプリミティブです。ちょうど' int'のように32ビットです。他のオプションがないので、デフォルトではありません。さらに、 'char'は数値プリミティブであり、' int'と同じように「データ構造」です。 –

+0

私はあなたを和らげるために英語の使用を修正しました。しかし、私はcharがデータ構造体であり、int型と同じように存在するという事実に立っています。 – JahKnows