「4.12.3. 変数の種類」の編集履歴(バックアップ)一覧はこちら

4.12.3. 変数の種類」(2012/09/10 (月) 23:15:05) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*[[4. 型と値と変数]] **[[4.1. 型と変数の種類]] **[[4.2. プリミティブ型と値]] **[[4.3. 参照型と値]] **[[4.4. 型変数]] **[[4.5. 引数付き型]] **[[4.6. 型の抹消]] **[[4.7. 具象可能型]] **[[4.8. 未加工型]] **[[4.9. 交差型]] **[[4.10. サブタイプ化]] **[[4.11. 型の使用箇所]] **[[4.12. 変数]] ***[[4.12.1. プリミティブ型の変数]] ***[[4.12.2. 参照型の変数]] ***4.12.3. 変数の種類 変数には7つの種類があります。: -&i(){クラス変数(class variable)}はクラス宣言内でキーワード&tt(){static}を使用して宣言されたフィールド([[8.3.1.1.>8.3.1.1. staticフィールド]])、もしくはインタフェース宣言内でキーワード&tt(){static}を使用してまたは使用せず宣言されたフィールド([[9.3.>9.3. フィールド (定数) 宣言]])です。   クラス変数はそのクラスやインタフェースが[[準備>12.3.2. クラスやインタフェース型の準備]]されデフォルト値に[[初期化>4.12.5. 変数の初期値]]された時に作成されます。クラス変数はその変数やインタフェースが[[ロード解除>12.7. クラスとインタフェースのロード解除]]された場合に効率的に存在を終えます。 -&i(){インスタンス変数(instance variable)}はキーワード&tt(){static}([[8.3.1.1.>8.3.1.1. staticフィールド]])を使用せずにクラス宣言内で宣言されたフィールドです。   インスタンス変数であるフィールド&tt(){a}を持つクラスTがあるならば、新規インスタンス変数&tt(){a}は、クラスTまたはTの[[サブクラス>8.1.4. スーパークラスとサブクラス]]のオブジェクトが新規に作成される毎に、作成されデフォルト値に[[初期化>4.12.5. 変数の初期値]]されます。インスタンス変数はそのフィールドを持つオブジェクトが参照されなくなると、必要なオブジェクトの[[終了化子>12.6. クラスインスタンスの終了化子]]が実行された後に、効率的に存在を終えます。 -&(){配列要素(array component)}は名前のない変数です。[[配列>10. 配列]]の新規オブジェクトがされる毎に作成されデフォルト値に[[初期化>4.12.5. 変数の初期値]]されます([[15.10.>15.10. 配列作成式]])。配列要素はその配列が参照されなくなると効率的に存在を終えます。 -&i(){メソッド引数(method parameter)}([[8.4.1.>8.4.1. 仮引数]])はメソッドに渡される実引数の値につけれる名前です。   メソッド宣言内で宣言される全ての引数に対して、[[メソッドが呼び出される>15.12. メソッド呼び出し式]]毎に新たな引数の変数が作成されます。新たな変数はメソッド呼び出しの対応する実引数値で初期化されます。メソッド引数はメソッド本体の実行が完了したら効率的に存在を終えます。 -&i(){コンストラクター引数(constructor parameter)}はコンストラクターに渡される実引数の値につけられる名前です。   コンストラクター宣言内で宣言される全ての引数に対して、[[クラスインスタンス作成式>15.9. クラスインスタンス作成式]]や[[明示的コンストラクター呼び出し>8.8.7 コンストラクター本体]]でそのコンストラクターが実行される毎に新たな引数の変数が作成されます。新たな変数は作成式やコンストラクター呼び出しの対応する実引数値で初期化されます。コンストラクター引数はコンストラクター本体の実行が完了したら効率的に存在を終えます。 -&i(){例外引数(exception parameter)}は[[try文>14.20. try文]]の&tt(){catch}節で例外が捉えられる毎に作成されます。   新たな変数は例外と関連した実オブジェクトと共に初期化されます([[11.3.>11.3. 実行時の例外の扱い]]、[[14.1.>14.1. 文の正常完了と中途完了]])。例外引数は&tt(){catch}節と関連づいたブロックの実行が完了したら効率的に存在を終えます。 -&i(){局所変数(local variable)}は[[局所変数宣言文>14.4. 局所変数宣言文]]で宣言されます。   制御フローがある[[ブロック>14.2. ブロック]]や[[for文>14.14. for文]]に入ったら、そのブロックや&tt(){for}文にある局所変数宣言文で宣言される全ての局所変数は直ちに作成されます。   局所変数宣言文が変数を初期化する式を含んでいても構いません。しかし、それを宣言した局所変数宣言文が実行されるまでは初期化式を伴う局所変数は初期化されません。([[確実な代入>16. 確実な代入]]の規則は局所変数の値が使われる前に初期化されるか値が代入される前に使用されることを防ぎます。)局所変数はそのブロックや&tt(){for}文が完了すると効率的に存在を終えます。   &i(){&small(){1つの特別な状況がなければ、局所変数はその局所変数宣言文が実行される時に作成されると常に考えることができました。特別な状況とは[[switch文>14.11. switch文]]です。ここでは局所変数宣言文の実行を飛ばしてブロックの中に入る制御が可能です。しかし、[[確実な代入>16. 確実な代入]]の規則で記述される制約により、そのような飛ばされる局所変数宣言文で宣言される局所変数は、[[代入式>15.26. 代入演算子]]により値を確実に代入されるまで、使用することができません。}} #divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{ &bold(){&aname(ex4.12.3-1,option=nolink){例4.12-3-1. 異なる種類の変数}} class Point { static int numPoints; // numPoints is a class variable int x, y; // x and y are instance variables int[] w = new int[10]; // w[0] is an array component int setX(int x) { // x is a method parameter int oldx = this.x; // oldx is a local variable this.x = x; return oldx; } } }}} ***[[4.12.4. final変数]] ***[[4.12.5. 変数の初期値]] ***[[4.12.6. 型とクラスとインタフェース]]
*[[4. 型と値と変数]] **[[4.1. 型と変数の種類]] **[[4.2. プリミティブ型と値]] **[[4.3. 参照型と値]] **[[4.4. 型変数]] **[[4.5. 引数付き型]] **[[4.6. 型の抹消]] **[[4.7. 具象可能型]] **[[4.8. 未加工型]] **[[4.9. 交差型]] **[[4.10. サブタイプ化]] **[[4.11. 型の使用箇所]] **[[4.12. 変数]] ***[[4.12.1. プリミティブ型の変数]] ***[[4.12.2. 参照型の変数]] ***4.12.3. 変数の種類 変数には7つの種類があります。: -&i(){クラス変数(class variable)}はクラス宣言内でキーワード&tt(){static}を使用して宣言されたフィールド([[8.3.1.1.>8.3.1.1. staticフィールド]])、もしくはインタフェース宣言内でキーワード&tt(){static}を使用してまたは使用せず宣言されたフィールド([[9.3.>9.3. フィールド (定数) 宣言]])です。   クラス変数はそのクラスやインタフェースが[[準備>12.3.2. クラスやインタフェース型の準備]]されデフォルト値に[[初期化>4.12.5. 変数の初期値]]される時に作成されます。クラス変数はその変数やインタフェースが[[ロード解除>12.7. クラスとインタフェースのロード解除]]された場合に効率的に存在を終えます。 -&i(){インスタンス変数(instance variable)}はキーワード&tt(){static}([[8.3.1.1.>8.3.1.1. staticフィールド]])を使用せずにクラス宣言内で宣言されたフィールドです。   インスタンス変数であるフィールド&tt(){a}を持つクラスTがあるならば、新規インスタンス変数&tt(){a}は、クラスTまたはTの[[サブクラス>8.1.4. スーパークラスとサブクラス]]のオブジェクトが新規に作成される毎に、作成されデフォルト値に[[初期化>4.12.5. 変数の初期値]]されます。インスタンス変数はそのフィールドを持つオブジェクトが参照されなくなると、必要なオブジェクトの[[終了化子>12.6. クラスインスタンスの終了化子]]が実行された後に、効率的に存在を終えます。 -&i(){配列要素(array component)}は名前のない変数です。[[配列>10. 配列]]の新規オブジェクトがされる毎に作成されデフォルト値に[[初期化>4.12.5. 変数の初期値]]されます([[15.10.>15.10. 配列作成式]])。配列要素はその配列が参照されなくなると効率的に存在を終えます。 -&i(){メソッド引数(method parameter)}([[8.4.1.>8.4.1. 仮引数]])はメソッドに渡される実引数の値につけれる名前です。   メソッド宣言内で宣言される全ての引数に対して、[[メソッドが呼び出される>15.12. メソッド呼び出し式]]毎に新たな引数の変数が作成されます。新たな変数はメソッド呼び出しの対応する実引数値で初期化されます。メソッド引数はメソッド本体の実行が完了したら効率的に存在を終えます。 -&i(){コンストラクター引数(constructor parameter)}([[8.8.1>8.8.1. 仮引数と型引数]])はコンストラクターに渡される実引数の値につけられる名前です。   コンストラクター宣言内で宣言される全ての引数に対して、[[クラスインスタンス作成式>15.9. クラスインスタンス作成式]]や[[明示的コンストラクター呼び出し>8.8.7 コンストラクター本体]]でそのコンストラクターが実行される毎に新たな引数の変数が作成されます。新たな変数は作成式やコンストラクター呼び出しの対応する実引数値で初期化されます。コンストラクター引数はコンストラクター本体の実行が完了したら効率的に存在を終えます。 -&i(){例外引数(exception parameter)}は[[try文>14.20. try文]]の&tt(){catch}節で例外が捉えられる毎に作成されます。   新たな変数は例外と関連した実オブジェクトと共に初期化されます([[11.3.>11.3. 実行時の例外の扱い]]、[[14.1.>14.1. 文の正常完了と中途完了]])。例外引数は&tt(){catch}節と関連づいたブロックの実行が完了したら効率的に存在を終えます。 -&i(){局所変数(local variable)}は[[局所変数宣言文>14.4. 局所変数宣言文]]で宣言されます。   制御フローがある[[ブロック>14.2. ブロック]]や[[for文>14.14. for文]]に入ったら、そのブロックや&tt(){for}文にある局所変数宣言文で宣言される全ての局所変数は直ちに作成されます。   局所変数宣言文が変数を初期化する式を含んでいても構いません。しかし、それを宣言した局所変数宣言文が実行されるまでは初期化式を伴う局所変数は初期化されません。([[確実な代入>16. 確実な代入]]の規則は局所変数の値が初期化される値が代入される前に使用されることを防ぎます。)局所変数はそのブロックや&tt(){for}文が完了すると効率的に存在を終えます。   &i(){&small(){1つの特別な状況がなければ、局所変数はその局所変数宣言文が実行される時に作成されると常に考えることができました。特別な状況とは[[switch文>14.11. switch文]]です。ここでは局所変数宣言文の実行を飛ばしてブロックの中に入る制御が可能です。しかし、[[確実な代入>16. 確実な代入]]の規則で記述される制約により、そのような飛ばされる局所変数宣言文で宣言される局所変数は、[[代入式>15.26. 代入演算子]]により値を確実に代入されるまで、使用することができません。}} #divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){{{ &bold(){&aname(ex4.12.3-1,option=nolink){例4.12-3-1. 異なる種類の変数}} class Point { static int numPoints; // numPoints is a class variable int x, y; // x and y are instance variables int[] w = new int[10]; // w[0] is an array component int setX(int x) { // x is a method parameter int oldx = this.x; // oldx is a local variable this.x = x; return oldx; } } }}} ***[[4.12.4. final変数]] ***[[4.12.5. 変数の初期値]] ***[[4.12.6. 型とクラスとインタフェース]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー