1. 記憶がどのように整理されるか

すべてのコンピュータには内部メモリが搭載されています。それは何ですか?どのような特性があるのでしょうか? そして最も重要なことですが、それは私たちにどのような利益をもたらすのでしょうか?

すべてのプログラム ( Java で書かれたプログラムを含む) は、実行前にメイン メモリにロードされます。メイン メモリには、プログラム コード (プロセッサによって実行される) とプログラム データ (つまり、プログラム自体がメモリに格納するデータ) が含まれています。

記憶とは何ですか、またそれはどのようなものですか?

Excel スプレッドシートはセルで構成されます。各セルには独自の一意の識別子( A1A2、 ... B1B2) があります。セルの識別子がわかっている場合は、いつでもセルに値を書き込んだり、そこに格納されている値を取得したりできます。コンピューターのメモリも非常によく似た方法で構成されています。

プログラムとプログラム データは、プログラムの実行中にメモリに保存されます。すべてのコンピュータ メモリは、バイトと呼ばれる小さなセルで構成されています。各セルには、固有の識別子または番号が関連付けられています: 0123、 ...; (番号はゼロから始まります)。セルの番号がわかれば、そこにデータを保存できます。またはそこからデータを取得します。一部のセルにはプログラムのコード、つまりプロセッサに対する一連のコマンドが格納されます。プログラムで使用されるデータを保存するものもあります。セルの番号はセルアドレスとも呼ばれます。

プロセッサは、メモリにロードされたコマンドを実行する方法を知っています。ほとんどすべてのプロセッサ コマンドは、いくつかのセルからデータを取得しそれに対して何かを実行しその結果を他のセルに送信するようなものです。

何百もの単純なコマンドを組み合わせて、複雑で便利なコマンドを作成します。

変数がコードで宣言されると、まだ使用されていないメモリのチャンクがその変数に割り当てられます。通常、これは数バイトです。変数を宣言するには、プログラムが変数に格納する情報の種類 (数値、テキスト、その他のデータ) を指定する必要があります。結局のところ、保存する情報の種類が分からない場合、変数にどのくらいの大きさのメモリ ブロックを割り当てる必要があるのか​​が明確になりません。

コンピューター時代の黎明期、プログラムはメモリーアドレスを直接操作していましたが、その後、プログラマーの便宜を図るために、セルに名前が付けられるようになりました。プログラムはプレーンなメモリ アドレスを適切に処理するため、一意変数名は何よりもプログラマの利便性を考慮して付けられます。


2. メモリ内の変数

Java には、整数を格納するためのデータ型が合計 4 つあります。これらはbyte、、、、shortおよびintですlong

タイプ バイト単位のサイズ 型名の由来
byte 1 byte はbit との混同を避けるために、bite を意図的に書き換えたものです。
short 2 短い整数の略
int 4 整数の略称
long 8 長い整数の短縮形

さらに、Java には実数として float と double の 2 つの型があります。

タイプ バイト単位のサイズ 型名の由来
float 4 浮動小数点数の略称
double 8 Double Floatの略称

プログラムの実行が変数を作成するコマンドに到達するたびに、小さなメモリ ブロックが変数に割り当てられます (サイズは変数のタイプによって異なります)。

変数のアドレスは、割り当てられたメモリ ブロックの最初のセルのアドレスです。

Java プログラムはメモリに直接アクセスすることはできません。メモリを使用するすべての作業は、Java 仮想マシンを通じてのみ行われます。


3.Stringメモリ内のタイプ

このString型は大量のデータを格納できます。これは、それが単なるデータ型ではなく、本格的なクラスであることを意味します。

オブジェクトStringは、テキストが格納されている別のメモリ ブロックのアドレスを格納する、割り当てられたメモリ ブロックに配置されます。

変数はバイトをint a占有し4、値を格納します1

変数はバイトをint b占有し4、値を格納します10,555。千の位の区切り文字としてカンマを使用します。また、小数点の区切り文字としてピリオドを使用します。

変数はバイトをdouble d占有し8、値を格納します13.001

変数はバイトをString str占有し、テキストを含むメモリ ブロックの最初のセルのアドレスである4値を格納します。G13

のテキストはString objectメモリの別のブロックに保存されます。最初のセルのアドレスはstr変数に格納されます。


4. プログラミングにおいて番号付けがなぜゼロから始まるのか

プログラマーがほとんどの場合、なぜゼロから数え始めるのか不思議に思う人がよくいます。実際のところ、ゼロから数えたほうが便利な状況はたくさんあります(もちろん、 から数えたほうが便利な状況もあります1)。

最も単純な例はメモリのアドレス指定です。変数にメモリのバイトが割り当てられており、それが最初のバイトのアドレスであることが4わかっている場合、各バイトのアドレスは何になるでしょうか? 、、、、。_ _ 非常に単純ですが、インデックス、、、を使用してアクセスできるバイトのグループがあります。XX+0X+1X+2X+30123

データ ブロック内の相対アドレスを考えると、ゼロからインデックスを付けるのが理にかなっています。これが、ゼロからカウントする主な理由です。