Java変数とfinalキーワード

序文

ここではどのような基本的なデータ型または参照型の話に、主変数はいくつかの小さなポイントを理解するために初期化されていません


Javaの変数

Java変数の場合は、ローカル変数とメンバ変数への位置に応じて:

  • ローカル変数:メソッドや文のブロック内の変数の定義(、ないコンパイラによって初期化されていない場合は、パラメータを除いては、ローカル変数は明示的に初期化する必要があります)。(変数定義されたメソッドのシグネチャ)(1)のパラメータ:ローカル変数は、次の3つのタイプに分ける方法の全範囲、オブジェクトまたはクラスがメソッド、すべてのスタック領域形状のためのシステムでメソッドを呼び出すとき参照は、メモリ空間を割り当て、引数、パラメータの対応する値を割り当て、従って初期化パラメータを完了し、(2)ローカル変数の方法(メソッドで定義されている):ローカル変数のスコープの定義が有効になりました、プロセスの終わりの消失(ブロックで定義されている)(3)ブロックのローカル変数:可変力のローカル定義の範囲から出発して、ブロックの端部が失敗します。
  • メンバー変数:内部メソッドは外部のクラス変数の定義されました。クラスメンバ変数とメンバはメソッドで構成されています。メンバ変数はインスタンス変数とクラス変数に分割されています。使用静的メンバ変数はクラス自体に属し、クラス変数を変更され、変更され、静的メンバ変数はインスタンス変数で使用していない、クラスのインスタンスです。唯一同じJVMクラス・オブジェクト、および専用メモリ空間同じJVMクラス変数内したがって、クラスの各クラスに対応するからである。しかし、インスタンス変数のために、すべてのインスタンス一旦作成されたクラスは、それがインスタンス変数のために必要ですメモリ空間のブロックを割り当てます。言い換えれば、プログラムの複数のインスタンス、我々はメモリ空間のいくつかの作品を必要とするインスタンス変数があります。

詳細finalキーワード

  1. ときに変更クラス:最終的なクラスを変更するために使用される場合、クラスが継承することができないことを示しています。Aクラスが最終である変性注:.、最終的なクラスのメンバ変数は、それらの実際のニーズに応じてfianlに設計することができます。B. A方式、最終的なクラスメンバーは、暗黙的に指定され、最終的な方法になります。説明:独自のデザインのクラスでは、あなたがこっち、クラスがfianl修正を使用することはできません、継承することができれば、将来的にこのクラスを拡張するかどうかを良いことにするために、一般的に、我々はツールを傾向がある、fianlなるように設計されていますクラス。JDKには、文字列、システムおよび他のfinalクラスを持つように設計されています。

  2. 修正方法:最終修正メソッドをオーバーライドすることはできません。注:.暗黙的にクラスは、最終的な方法として指定されている民間の方法。B。親クラスのメソッドの最終変更した場合、そのサブクラスは、外出先を上書きすることができます。

  3. ローカル変数を変更する場合:また、(使用する前に初期化されない割り当ては、唯一の割当てはならない場合)のみ、いったん割り当てることができる場合は、次のコードとしての初期化時に、その後の使用の最終的な変数の割り当て、 :

    public static void main(String[] args) {    
    		//进行宏替换的final变量 
    		final int a=5; 
    		//这里再运行过程中直接将a转化成5,这就是“宏变量”,必须再定义是才有效果
    		// 我自己试着直接将class文件反编译后,发现a被直接替换为5了
    		/*
    		 * 如果一个final满足这三个条件,那么他就相当于一个直接量
    使用final进行修饰
    在定义final变量的时候进行了初始化。
    该初始值在编译的时候就可以确定下来。
    是不是看出来一个很重要的点,那就是在定义时就进行初始化。
    		 */
    		System.out.println(a);    
    		
    	}
    

    デコンパイル後にこのコード:

    public static void main(String[] args) {    
    		int a=5; 
    		System.out.println(5);    
    		
    	}
    

    これは、直接、値が5である変数に置き換える見ることができます。これはマクロ置換です。

  4. 修飾されたメンバ変数は:、fianl修飾メンバ変数を割り当てられた2つの状況に分けられる:
    最初のものは、最終的な修正インスタンス変数です。構成プロセスでは、第3;コードブロックで行われる第一、第一、直接定義初期化:この最後の初期化は、次の3つの場所で行われます。
    第二は、このときのクラスのメンバ変数を変更された最終的な変数が同時に静的、最終的な変更です。;第二、静的コードブロックタイプ最初、直接定義:そのような変数は、2つの場所で初期化されます。

公開された14元の記事 ウォン称賛15 ビュー525

おすすめ

転載: blog.csdn.net/CodingNO1/article/details/104307475