ゼロベース学習 Java 07

目次

静的キーワード

最後のキーワード

コードブロック


静的キーワード

  • static (static キーワード)、メンバー変数とメンバー メソッドを変更できます。
  • static キーワードの特徴は、 1. クラスのロードと同時にロードされる、 2. オブジェクトよりも先に存在する、 3.クラスのすべてのオブジェクトで共有される(static キーワードを使用するかどうかの判断条件) static); 4. クラス名で呼び出すことが可能(推奨用途)
  • 静的メソッド: 静的メソッドは静的メソッドとも呼ばれます。静的メソッドはオブジェクトに依存せずにアクセスできるため、オブジェクトに this キーワードが付加されているため、静的メソッドには this キーワードを使用する必要はありません。クラスの静的非静的メンバーにはメソッドではアクセスできませんが、静的メンバー メソッドまたは静的変数には非静的メンバー メソッドでアクセスできます。
  • 静的変数: 静的変数は、静的変数またはクラス変数とも呼ばれます。静的変数と非静的変数の違いは、静的変数はすべてのオブジェクトによって共有され、メモリ内にコピーが 1 つだけ存在することです。初期化、非静的変数は次のユーザーによって所有されます。メモリ内には複数のコピーがあり、各オブジェクトが所有するコピーは相互に影響しません。静的メンバ変数の初期化順序は定義順に行われます。
  • ノート:
  • Java の static キーワードは、変数やメソッドのスコープには影響しません。Java のアクセス権に影響を与えることができるのは、アクセス修飾子のみです。
  • 静的メンバー変数はオブジェクトから独立していますが、(アクセス権が十分である限り) オブジェクトを通じてアクセスできます。
  • static ではローカル変数を変更できません
  • 静的要素はオブジェクトとは関係がなく、クラスに属していることがわかります。
  • this キーワードと super キーワードは静的要素では使用できません
  • 静的変数はメソッド領域の静的領域に格納されます。

 

最後のキーワード

  • Final キーワードは、クラス、メソッド、変数を変更するために使用できます。
  • Modified class : クラスが Final で変更されると、クラスを継承できないことを示します。最終クラスのメンバー変数はデフォルトでは変更されず、必要に応じて Final に設定できますが、最終クラスのすべてのメソッドは変更されますデフォルトでは。
  • 変更方法: 書き換えの問題では、親クラスのメソッドが最終的に変更されると、親クラスのメソッドをサブクラスでオーバーライドできないこと、つまり、サブクラスがこのメソッドを書き換えることが禁止されていることを示します (主な目的)メソッドの内容が変更されるのを防ぎます)
  • : 書き換えの前提は、サブクラスが親クラスからこのメソッドを継承できることです。親クラスの最終的に変更されたメソッドも private によって変更されている場合、サブクラスはこの時点で書き換えと Final の間に競合は発生しません。 Inherit thisメソッドがない場合、このメソッドはプライベート化されます。継承の書き換えがないため、finalは効果がありません。そのため、親クラスのメソッドの修飾子がprivateとfinalの両方を持つ場合、サブクラスでは同じ宣言されたメソッドが使用されます。これはサブクラス内の新しいメソッドを再定義するとみなされるため、引き続き表示される可能性があります。
  • 変更された変数: Final によって変更された変数は定数になります。定数は再割り当てできません。読み取り専用で、書き込み可能ではありません。Java で定数を定義するときは、通常、静的な変更が追加されます。定数は変更されず、すべてのオブジェクトが同じであるためです。同じ新しいものでは、メモリが無駄になります。
    : Final として定義されたメンバー変数は、オブジェクトの構築時に初期化する必要があり、後で変更することはできません。
  • Final が基本データ型を変更する場合、値は変更できません。final が参照型データを変更する場合、アドレス値は変更できませんが、オブジェクトの内容は変更できます。
  • 最終的に変更されたインスタンス変数は手動で割り当てる必要があり、システムのデフォルト値を採用することはできません
  • 親クラスの最後のメソッドはサブクラスに継承できますが、サブクラスによってオーバーライドすることはできません。
  • 最終的に変更された参照が指すオブジェクトは、ガベージ コレクターによって再利用できません

注意: 変数をfinalで変更すると、その変数は定数になります、定数なのでメモリに格納されるのは値だけで、前の変数のメモリとは何の関係もありません、つまり変数が消滅すると、定数は消えませんし、値はまだ計算中なので、変数の消滅によって特定のデータが消えないようにしたい場合は、定数として変更します 

 

コードブロック

Javaでは{ }で囲まれたコードをコードブロックと呼び、その位置と宣言によりローカルコードブ​​ロック、構築コードブロック、静的コードブロック、同期コードブロックに分けられます。

  • ローカル コード ブロック: 通常のコード ブロックとも呼ばれ、メソッド内に表示され、変数のライフ サイクルを制限し、主に現在のメソッドで変数名が重複する問題を解決するために使用されます。相互に影響を与えずにメソッド内で同じ変数名を複数回使用したい場合は、変数を異なるローカル コード ブロックに配置できます。これは、ローカル コード ブロック内の変数のライフ サイクルがそのコード ブロックに制限されているためです。
  • コンストラクションコードブロック: クラス内のメソッドの外に現れる 複数のコンストラクションメソッドの同じコードをまとめて保存し、コンストラクションが呼び出されるたびに実行される オブジェクトが生成されている限り、コンストラクションコードブロックが実行される main関数オブジェクトを初期化することです
  • 静的コード ブロック: クラス内のメソッドの外側に表示され、静的修飾子を追加し、最初に実行され、クラスの複数のオブジェクトに対して 1 回だけ実行されます。その主な機能はクラスを初期化し、クラスがロードされるときに実行することです。オブジェクトを作成するかどうかとは関係ありません
  • 同期コード ブロック: メソッド内に表示され、synchronized キーワードで変更されます。マルチスレッド環境では、共有データの読み取りおよび書き込み操作は相互に排他的である必要があります。そうしないと、データの不整合が発生します。

上記のコード ブロックの実行順序は次のとおりです

静的コード ブロック --> 構築コード ブロック --> 構築方法 --> 部分コード ブロック
 

おすすめ

転載: blog.csdn.net/timberman666/article/details/130142238