5

Delphi/Pascal には、メソッド内のローカル変数が、あるメソッド呼び出しから次のメソッド呼び出しまで値を記憶できるメカニズムがあります。これは、型付き定数を使用して行われます。例えば:

procedure blah();
const
  i: integer = 0;
begin
  i := i + 1;

  writeln(i);
end;

blah() を呼び出すたびに、インクリメントします。出力は次のようになります。

1 2 3 4 5 ...

(各番号は別々の行にありますが、ここの編集者はそれらを同じ行に入れました)

Javaと同等のものはありますか?

4

3 に答える 3

5

静的変数を使用できます。最初の呼び出しで 1 回開始されます。そして、呼び出しごとに最新の値を保存します。

public class usingBlah{
    static int i = 0;

    void blah() {
        i++;
        //print here by Log.i or whatever
    }
}

ここでは、デルファイのコードのように、i は最初の呼び出しで定義され、開始されます。次回の呼び出しでは、最新の値が保存されます。

于 2013-06-04T11:23:28.130 に答える
4

静的変数が役立つ場合があります。

静的変数は、クラスの最初のインスタンスが作成されるときに 1 回だけ初期化されます。その後、値を格納します。

于 2013-06-04T11:24:15.870 に答える
3

Java で最も近いものは、クラスの静的変数です。これには静的な寿命がありますが、Delphi の代入可能な型付き定数よりも広いスコープもあります。

Javaでは、ローカル スコープを持ち、静的な有効期間を持つ、Delphi の古風な名前の代入可能な型付き定数とまったく同じものはありません。静的クラス変数は、可能な限り近いものです。

C/C++ では、Delphi の代入可能な型付き定数と同じセマンティクスを持つ、静的ストレージ期間を持つローカル変数を使用できます。

于 2013-06-04T11:23:34.197 に答える