(Java Foundation) キーワード

キーワード

Javaにはgotoがあるのでしょうか?

  • goto は Java の予約語であり、現在のバージョンの Java では使用されません。

ファイナルって何の役に立つの?

用于修饰类、属性和方法;
  • Final で変更されたクラスは継承できません
  • Final によって変更されたメソッドはオーバーライドできません
  • Final によって変更された変数は変更できません。最終的に変更され不変となるのは、変数の参照であり、参照が指す内容ではありません。参照が指す内容は変更できます。

最終的に最終的に差異を確定する

  • Final はクラス、変数、およびメソッドを変更できます。変更されたクラスはクラスが継承できないことを示し、変更されたメソッドはメソッドをオーバーライドできないことを示し、変更された変数は変数が再割り当てできない定数であることを示します。
  • finally は通常、try-catch コード ブロック内で動作します。例外を処理するときは、通常、実行する必要があるコード メソッドをfinally コード ブロック内に置き、例外が発生したかどうかに関係なくコード ブロックが実行されることを示します。いくつかの閉じられたリソースのコードを保存するために使用されます。
  • Finalize は Object クラスに属するメソッドであり、Object クラスはすべてのクラスの親クラスです。このメソッドは通常、ガベージ コレクターによって呼び出されます。System.gc() メソッドを呼び出すと、ガベージ コレクターは Finalize ( )、ゴミのリサイクル、物体がリサイクル可能かどうかの最終判断。

このキーワードの使用法

  • これはそれ自体のオブジェクトであり、オブジェクト自体を表し、オブジェクト自体へのポインタとして理解できます。

  • Javaでのthisの使い方は大きく3つに分けられます。

    • 1. 通常の直接参照。これは現在のオブジェクト自体を指すのと同じです。

    • 2. 正式参加メンバーの名前は同じです。区別するためにこれを使用します。

      public Person(String name, int age) {
              
              
          this.name = name;
          this.age = age;
      }
      
    • 3. このクラスのコンストラクターを参照する

      class Person{
              
              
          private String name;
          private int age;
          
          public Person() {
              
              
          }
       
          public Person(String name) {
              
              
              this.name = name;
          }
          public Person(String name, int age) {
              
              
              this(name);
              this.age = age;
          }
      }
      

スーパーキーワードの使い方

  • super は、それ自身のスーパー (親) クラス オブジェクトへのポインターとして理解でき、このスーパー クラスは、それ自体に最も近い親クラスを参照します。

  • super には 3 つの用途もあります。

    • 1. 通常の直接引用

      これと同様に、super は現在のオブジェクトの親クラスへの参照と同等であるため、super.xxx を使用して親クラスのメンバーを参照できます。

    • 2. サブクラスのメンバ変数またはメソッドが親クラスのメンバ変数またはメソッドと同じ名前の場合、スーパーを使用して区別します。

      class Person{
              
              
          protected String name;
       
          public Person(String name) {
              
              
              this.name = name;
          }
       
      }
       
      class Student extends Person{
              
              
          private String name;
       
          public Student(String name, String name1) {
              
              
              super(name);
              this.name = name1;
          }
       
          public void getInfo(){
              
              
              System.out.println(this.name);      //Child
              System.out.println(super.name);     //Father
          }
       
      }
      
      public class Test {
              
              
          public static void main(String[] args) {
              
              
             Student s1 = new Student("Father","Child");
             s1.getInfo();
       
          }
      }
      
    • 3. 親クラスのコンストラクターを参照する

      • super (パラメーター): 親クラスのコンストラクターを呼び出します (コンストラクターの最初のステートメントである必要があります)。
      • this (パラメーター): このクラスの別の形式のコンストラクターを呼び出します (コンストラクターの最初のステートメントである必要があります)。

これと超の違いは

  • super: 現在のオブジェクトの直接の親クラスのメンバーを参照します (基底クラスと派生クラスが同じメンバー定義を持つ場合に、直接の親クラスの非表示の親クラスのメンバー データまたは関数にアクセスするために使用されます。 as: super.変数名 super.メンバ関数データ名(実引数)
  • this: 現在のオブジェクトの名前を表します (プログラム内で曖昧さが発生する可能性がある場合、これを使用して現在のオブジェクトを示します。関数の正式参加クラスのメンバー データが同じ名前の場合、これはメンバー変数名を示すために必要です)
  • super() は this() に似ていますが、super() がサブクラス内の親クラスのコンストラクターを呼び出し、this() がクラス内のクラスの他のコンストラクターを呼び出す点が異なります。
  • super() と this() の両方をコンストラクターの最初の行に配置する必要があります。
  • これでコンストラクターを 1 つ呼び出すことはできますが、2 つ呼び出すことはできません。
  • これは必然的に他のコンストラクターを呼び出すことになり、他のコンストラクターにも super ステートメントが必要であるため、同じコンストラクター内に同じステートメントがある場合、それは失われます。ステートメントを指定すると、コンパイラはパスしません。
  • this() と super() はどちらもオブジェクトを参照するため、どちらも静的環境では使用できません。静的変数、静的メソッド、静的ステートメント ブロックが含まれます。
  • 基本的に、これはこのオブジェクトへのポインタですが、super は Java キーワードです。

静的な存在の主な意味

  • static の主な意義は、特定のオブジェクトから独立してドメイン変数またはメソッドを作成することです。そのため、オブジェクトを作成しなくても、プロパティを使用してメソッドを呼び出すことができます
  • static キーワードのもう 1 つの重要な機能は、静的コード ブロックを形成してプログラムのパフォーマンスを最適化することです。静的ブロックはクラス内のどこにでも配置でき、クラス内に複数の静的ブロックが存在する可能性があります。クラスが最初にロードされるとき、各静的ブロックは静的ブロックの順序で 1 回だけ実行されます。
  • 静的ブロックを使用してプログラムのパフォーマンスを最適化できる理由は、クラスのロード時に 1 回だけ実行されるというその特性のためです。したがって、多くの場合、一度だけ実行する必要がある初期化操作の一部は静的コード ブロックに配置されます。

静的な独自性

  • 1. static によって変更された変数またはメソッドは、クラスのどのオブジェクトからも独立しています。つまり、これらの変数やメソッドはどのインスタンス オブジェクトにも属さず、クラスのインスタンス オブジェクトによって共有されます

「クラスのインスタンス オブジェクトによって共有される」という表現をどのように理解しますか? つまり、クラスの静的メンバーは全員に属します [誰もがこのクラスの複数のオブジェクト インスタンスを参照します。クラスが複数のインスタンスを作成できることは誰もが知っています。]、すべてのクラス オブジェクトは共有されており、メンバー変数が独自のものではありません [self は、このクラスの単一のインスタンス オブジェクトを指します]...私が言ったことは非常に一般的だと思いますが、理解できますか?

  • 2. クラスを初めてロードするときは、static で変更された部分をロードし、クラスを初めて使用するときのみロードして初期化します。再割り当て可能であること。
  • 3. 静的変数値は、クラスがロードされるときに領域が割り当てられ、後でクラス オブジェクトが作成されるときに再割り当てされません。値を割り当てる場合は任意に割り当てることができます。
  • 4. static によって変更された変数またはメソッドはオブジェクトよりも前にあります。つまり、クラスがロードされた後は、オブジェクトが作成されていなくてもアクセスできます。

静的アプリケーションのシナリオ

  • static はクラスのインスタンス オブジェクトによって共有されるため、メンバー変数がすべてのオブジェクトによって共有される場合、このメンバー変数は static 変数として定義する必要があります
  • したがって、より一般的な静的アプリケーションのシナリオは次のとおりです。

1. 変更されたメンバー変数 2. 変更されたメンバー メソッド 3. 静的コード ブロック 4. 変更されたクラス [変更できるのは内部クラス、つまり静的内部クラスのみです] 5. 静的パッケージのインポート

静的なメモ

  • 1. 静的は静的のみにアクセスできます
  • 2. 非静的は非静的と静的の両方にアクセスできます。

おすすめ

転載: blog.csdn.net/QRLYLETITBE/article/details/129644008