char 型は、C または C では 1 バイト、Java では 2 バイトを占めます。 char は、C または C で文字変数を定義するために使用されます。char データ型は整数型で、1 バイトのみを占有します。 Java では、Java コンパイラがデフォルトで Unicode エンコードを使用するため、char 型は 2 バイトを占有し、2 バイト (16 ビット) ですべての文字を表すことができます。
このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。
Baidu で「char は何バイトを占めるか」を検索したところ、次のような答えが得られました:
char C または C で定義された文字変数は 1 バイトのみを占める整数型で、値の範囲は -128 ~ 127 (-27 ~ 27-1) です。
char 型は 1 バイト (8 ビット) を占有し、格納できる正の整数は 0111 1111 (つまり 127) です。
明らかにこれは私たちが望む結果ではないので、「Java の char は何バイトを占めるか」を検索し続けました。
# #Java の Char は、文字のデータ型を格納するために使用されます。2 バイトを占有し、Unicode エンコードを使用します。エンコードの最初の 128 バイトは ASCII と互換性がありますが、一部の文字はそれを表すために 2 つの文字を必要とします。
C または C と Java で char が同じバイト数を占めるのはなぜですか?
一部の文字を表すために 2 つの文字が必要になるとはどういう意味ですか?
エンコーディング
この問題について説明する前に、まずいくつかの知識ポイントを普及させてみましょう。
まず第一に、コンピューターに保存されている情報は 2 進数で表されることは誰もが知っています。では、人間が使用する漢字や英語をコンピューターに保存するにはどうすればよいでしょうか?
たとえば、「a」をバイナリに変換してコンピュータに保存することを エンコーディング;
そしてコンピュータに保存された 2 進数を解析して表示することをエンコーディングといいます。は のデコード と呼ばれます。
文字セット
文字(キャラクター)とは、各種国語文字、句読点、図形記号など、さまざまな文字や記号の総称です。 、数字など。文字セット (文字セット) は、複数の文字の集合です。文字セットには多くの種類があり、各文字セットに含まれる文字数は異なります。一般的な文字セット名: ASCII 文字セット、GB2312 文字セット、BIG5 文字セット、 GB18030 文字セット、Unicode 文字セットなどこれは百度百科事典の説明ですが、とにかく文字セットとは文字の集合であり、文字セットにはたくさんの種類があり、文字セット内の文字数も異なります。コンピューターがさまざまな文字セットのテキストを正確に処理するには、コンピューターがさまざまなテキストを認識して保存できるように文字エンコーディングが必要です。
unicode
その名前は Unicode、ユニバーサル コードとも呼ばれ、シンボルの数は増え続けており、100 万を超えています。
Unicode が作成される前には、数百ものエンコーディング システムがありました。エンコーディングには十分な文字数を含めることはできません。その名前からわかるように、すべてのシンボルのエンコーディングです。各シンボルには独自のエンコーディングが与えられるため、エンコーディングの違いによるコード化けの問題は解消されます。
ほとんどのコンピュータは、すべての大文字と小文字、数字、句読点、制御文字を表す 7 ビットのエンコード スキームである ASCII (American Standard Code for Information Interchange) を使用しています。 Unicode には ASCII コードが含まれており、「\u0000」から「\u007F」は 128 個の ACSII 文字すべてに対応します。
実力のある人だけが基準を作れるような気がしてなりません。 Unicode は単なるシンボル セットです。シンボルのバイナリ コードを指定するだけです。文字と数字の間のマッピングを提供するだけで、このバイナリ コードの格納方法は指定しません。英語の文字数は非常に少なく、1 バイトで表現できることはわかっていますが、Unicode の中国語記号の数は非常に多く、1 バイトではまったく使用できません。その結果、後に UTF-8 や UTF-16 などの Unicode 文字格納のためのさまざまな実装方法が登場しました。 UTF-8 は、インターネット上で最も広く使用されている Unicode 実装です。
内部コードと外部コード
Java の char は数バイトを占めるとよく言われますが、これは Java の内部コードの char であるべきです。
内部コードは、Java の実行時にメモリ内で文字と文字列をエンコードする方法を指します。外部コードは、シリアル化テクノロジなど、プログラムが外部と対話するときに外部で使用される文字エンコードです。外部コードは、内部コードでない限り、外部コードであると理解できます。なお、ソースコードのコンパイルにより生成されるオブジェクトコードファイル(実行ファイルやクラスファイル)のエンコード方式は外部コードに属します。 JVM の内部コードは UTF16 を使用します。 UTF-16 の 16 は、16 ビットの最小単位を指します。つまり、2 バイトが 1 単位です。初期の頃、UTF16 は固定長の 2 バイト エンコードを使用してエンコードされていました。2 バイトで 65536 個のシンボルを表現できます (実際にはこれよりも少ないシンボルを表現できます)。これは、当時の Unicode のすべての文字を表現するのに十分でした。ただし、Unicode の文字数が増加すると、2 バイトではすべての文字を表現できなくなり、UTF16 では 2 バイトまたは 4 バイトを使用してエンコードを完了します。この状況に対処するために、Java は前方互換性要件を考慮して、4 バイトを必要とする文字を表す char のペアを使用します。したがって、Java の char は 2 バイトを使用しますが、一部の文字はそれを表すために 2 つの文字を必要とします。これは、一部の文字を表すために 2 つの文字が必要な理由を説明しています。
さらに: Java のクラス ファイルは文字の格納に UTF8 を使用します。つまり、クラス内の文字は 1 ~ 6 バイトを占めます。 Java のシリアル化中、文字も UTF8 でエンコードされ、1 ~ 6 文字が占められます。
#length()
次に、別の質問があります: Java の文字の String.length() は何ですか?前の知識ポイントを読んだ後は、もう口を開いて 1 と答えることはできません...デモを書いて見てください: Tiger を使用して寅年にテストしてください。tigerUTF は対応する Unicode エンコードを表します。
String tiger = "?"; String tigerUTF = "\uD83D\uDC05"; System.out.println(tigerUTF); System.out.println(tiger.length()); System.out.println(tiger.codePointCount(0,tiger.length()));
String.length() を呼び出した結果は 2 であると結論付けることができます。これは、string char 配列が占有していることを意味します。文字数ではなく、16 形式の UTF-2 コード単位 (つまり 4 バイト)。もちろん、
codePointCount メソッドを使用して、取得したい文字数を取得できます。
FAQ 列をご覧ください。
以上がchar型は何バイトを占めるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









