ホームページ >Java >&#&チュートリアル >Java プログラミングのアイデア: オブジェクトを操作するための参照の使用と、プログラム実行時のメモリの割り当て方法

Java プログラミングのアイデア: オブジェクトを操作するための参照の使用と、プログラム実行時のメモリの割り当て方法

php是最好的语言
php是最好的语言オリジナル
2018-08-03 14:56:091411ブラウズ

前に書いてます

まず、言いたいことは Java プログラミング思考 - ナレッジカード は、私が「Java プログラミング思考」という本を読んだ体験談です。では、なぜこのシリーズの記事を書きたいと思ったのでしょうか?理由はいくつかあります:

  • 仕事のプロジェクトの特殊性のため、Java 言語を 1 年以上使用していません。

  • 空いた時間を使って、困っている人たちを助けるために何かを書きたいと思っています。

  • 本全体の知識を細分化して、断片化された時間を最大限に活用してください。

通常の状況では、最新の記事は私の WeChat 公開アカウント: Java プログラミング コミュニティ で更新されます。ご興味がございましたら、フォローしてください。
さて、本題に入りましょう:

カード 01、参照を使用してオブジェクトを操作する

Java を研究している人は誰でも、Java がオブジェクト指向言語 (OOP) であることを知っていますが、Java は C++ に基づいていますが、それに比べて次に Java は次のとおりです。より「純粋な」オブジェクト指向プログラミング言語。 「すべてはオブジェクトである」ということわざがあるように、Java 言語はオブジェクト指向プログラミングのみを行うことを前提としています。つまり、設計に Java を使用し始める前に、考え方を変え、オブジェクトに注意を移す必要があります。これは Java 言語を使用するための基本的なスキルです。

すべてのプログラミング言語には、独自のデータ処理方法があります。場合によっては、プログラマは、どのような型を扱っているかに常に注意を払う必要があります。要素を直接操作するべきでしょうか、それともオブジェクトを操作するために特別な構文に基づいた間接的な表現を使用すべきでしょうか。 C および C++ ではポインタを使用します。 Java では、「すべてがオブジェクト」であり、すべてがオブジェクトとみなされるため、これはすべて単純化されます。 すべてがオブジェクトとして扱われますが、操作される識別子は実際にはオブジェクトへの参照です。理解に役立つ実際の例を次に示します。 生活の中で、私たちはリモコン(参照)を使用してテレビ(物体)を制御します。テレビのチャンネルや音量を変更したいときは、実際にリモコン(基準)を操作し、リモコンがテレビ(物体)を制御します。部屋中を移動しながらテレビを操作したい場合は、テレビ(物体)の代わりにリモコン(基準)を持ち運んでください
文字列参照を作成してみましょう:

String str;

ここでの str は単なる参照であり、オブジェクトではありません 参照は独立して存在することができ、必ずしもオブジェクトを関連付ける必要はありません。テレビではなく、独立して存在することができます。ただし、上記の作成は安全ではありません。安全な方法は、参照を作成するときに初期化することです。例:

String str = "hello";

Card 02. プログラムの実行中にメモリはどのように割り当てられますか?

プログラムの実行中に、データを保存できる場所は 5 つあります:

  • 1、Register: これは、他のストレージとは異なる場所にあるため、最速のストレージ領域です。場所 - プロセッサー内。ただし、レジスタの数は非常に限られており、要求に応じてレジスタが割り当てられるため、直接制御することはできませんし、プログラム中にレジスタの存在を感じることもできません。

  • 2、
  • スタック

    : は汎用RAM (ランダムアクセスメモリ) に配置されていますが、スタックポインタを介してプロセッサから直接サポートされています。スタック ポインタが下に移動すると、新しいメモリが割り当てられ、上に移動すると、そのメモリが解放されます。これは、レジスタに次いで高速かつ効率的にストレージを割り当てる方法です。 プログラムを作成するとき、Java システムはスタック ポインタを上下に移動するために、スタック内に格納されているすべての項目の正確な存続期間を知る必要があります 。この制約によりプログラムの柔軟性が制限されるため、一部の Java データ (特にオブジェクト参照) はスタックに格納されますが、Java オブジェクトはスタックに格納されません。

  • 3.
  • ヒープ

    : すべての Java オブジェクトを格納するために使用される一般的なメモリ プール (RAM 領域にもあります)。ヒープがスタックとは異なる利点は次のとおりです: コンパイラーは、保存されたデータがヒープ内でどのくらいの期間存続するかを知る必要がありません。したがって、ヒープ割り当てには大きな柔軟性があります。オブジェクトが必要な場合は、 new を使用して簡単なコード行を記述するだけで、このコード行が実行されると、ストレージがヒープに自動的に割り当てられます。もちろん、この柔軟性には代償を払う必要があります。ヒープによるストレージの割り当てとクリーンアップは、スタックによるストレージの割り当てよりも時間がかかる場合があります

    4.
  • 定数ストレージ
  • :

    定数値は通常、内部に直接保存されます。プログラム コード は決して変更できないため、安全に実行できます。組み込みシステムでは定数が他の部分から分離されている場合があるため、この場合は定数を ROM (読み取り専用メモリ) に保存することを選択できます。

  • 5. 非 RAM ストレージ: データがプログラムの外に完全に存在する場合、そのデータは プログラムによる制限を受けず、プログラムが実行されていないときでも存在できます。 2 つの基本的な例は次のとおりです: ストリーム オブジェクトと永続オブジェクト。「ストリーム オブジェクト」では、オブジェクトはバイト ストリームに変換され、通常は別のマシンに送信されます。「永続オブジェクト」では、オブジェクトはディスク上に保存されるため、そのオブジェクトは保持されます。プログラムが終了しても状態は維持されます。この保存方法のコツは、オブジェクトを 他のメディアに保存できるものに変換し、必要に応じて通常の RAM ベースのオブジェクトに復元することです。 Java は軽量の永続性のサポートを提供しますが、JDBC や休止状態などのメカニズムは、データベース内のオブジェクト情報の保存と読み取りのためのより高度なサポートを提供します。

関連記事:

Javaプログラミングの考え方のまとめ

Javaのオブジェクト指向プログラミングにおけるオブジェクト、参照、内部クラスの理解

以上がJava プログラミングのアイデア: オブジェクトを操作するための参照の使用と、プログラム実行時のメモリの割り当て方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。