ITバンドブラザーズの文法Java変数2

変数のスコープとライフサイクル

これまでのところ、全ての変数は()メソッド宣言が始まる主に使用され、ただし、Javaコードの任意のブロックは、変数を宣言し(コードブロックが閉じブレース端に括弧で開花開始する)ことができ、コードのブロックを定義しますスコープ。したがって、コードの新しいブロックを開始するたびに、新しいスコープが作成されます。スコープは、プログラムの他の部分に変数(オブジェクト)の可視性を決定し、また変数(オブジェクト)のライフサイクルを決定します。

他の多くのコンピュータ言語は、2つのスコープの一般的なカテゴリ、グローバルスコープとローカルスコープを定義します。しかし、これらの伝統的なスコープは良く厳しいのJava、オブジェクト指向モデルに適応していません。あなたは、グローバルスコープに属する変数を作成することができますが、これはむしろ例外ですが。Javaでは、それぞれ、クラス及びメソッドの定義の二つの主な範囲によって。この分類がクラスの範囲はいくつかのユニークな特性及び特徴を有するため、いくつかのヒトの要因が、しかし、プロセスによって定義された範囲に適用することができないので、この分類は、特定の理由です。この違いのため、クラススコープの導入は本書の範囲を超えていたので、この本は、メソッド定義で定義された範囲や方法を分析します。

括弧内の開花プロセスから出発する方法の範囲によって定義されます。しかし、メソッドのパラメータならば、彼らは法の適用範囲に含まれます。原則として、コードの定義については変数宣言スコープは、(すなわち、利用できない)範囲の外に見えません。したがって、宣言ドメイン変数、変数のローカライズされたオブジェクト、および不正使用や変更から保護。実際に、スコープルール・パッケージ(パッケージの学習段階の学習パッケージは、オブジェクト指向の三つの特徴の一つである、オブジェクト指向の三つの特徴は、次のとおり、カプセル化、継承、及び多型)の基礎を提供します。

スコープはネストすることができます。例えば、コードのブロックを作成するたびに、新しい、ネストされたスコープを作成します。このとき、内層範囲の外側の層は、スコープを囲ま。これは、外側のスコープで宣言された変数の範囲内のコードが表示されていることを意味します。しかしながら、逆は当てはまらない、内部スコープの変数宣言、最も内側のスコープの外側は見えません。

コードブロックでは、任意の位置で変数を宣言することができますが、後にのみ、変数の宣言は有効です。変数にアクセスするには、noコードがないため、変数宣言コードブロックの終わりに、その変数は、役に立たない場合したがって、冒頭に定義されたプロセス変数の場合、プロセスの全ての変数のコードは、逆に、表示されています。

その範囲を離れる際に、変数のスコープを入力するときに変数を作成し、変数が破壊されました。これは、一度スコープ外に、変数が元の値を保持していないことを意味します。だから、この方法で変数宣言のために、2つの方法の間のコールでは、変数はその値を保持しません。ブロックを出るときにさらに、コードブロック内で宣言された変数のために、その価値を失います。したがって、変数のライフサイクルは、範囲には限定されています。

変数の宣言は、初期化が含まれている場合は、コードブロックを入力するたびに、その変数の宣言は、変数を再初期化します。


変数を使用します

変数モードを使用してコンソール出力変数の値にするSystem.out.printlnを使用して変数を使用する多くの方法は、()があり、オペレータは、変数間の動作を完了するために使用されてもよいです。新しいJavaソースコードがExample01.javaのファイルは、次のコードを記述します。

パブリッククラスExample01 {

    / **

     *メイン処理プログラムを実行入口

     * /

    パブリック静的無効メイン(文字列[] args){

         int型の価格= 10;

         int型の数= 5;

         System.out.println( "合計:" +価格*数);

    }

}

動作時に上記の場合は、「*」完了変数の間の乗算は、「+」文字列番号を使用して、図2に示される最終的な入力をスプライシングを終了します。

82e2f1bf588348b3a2e462ebff5b5314.png

ランは、図2 Example01結果


唯一の文が、初期化されていない変数が使用を許可されていないことに注意してください、例えば、次のコード:

パブリッククラスExample01 {

    / **

     *メイン処理プログラムを実行入口

     * /

    パブリック静的無効メイン(文字列[] args){

         int型の価格= 10;

         int型の数= 5;

         System.out.println( "合計:" +価格*数);

         int型NUM; //変数を宣言したが初期化されていません

         System.out.println(num);        //使用一个未初始化的变量,在编译阶段将                                     //提示错误信息

    }

}

编译以上代码,控制台将提示如图3所示的错误。

9c8e800534394528bac2322192387d29.png

图3  编译错误


おすすめ

転載: blog.51cto.com/14311187/2412984