0

次の違いは何ですか:

1)

public void Angle(double f_angle) 
{
    if (f_angle <= 15 && f_Angle >= -15)
    {
        fAngle = 1000 * f_Angle * Math.PI / 180000;
    } else
        system.out.println("Firing Angle: " + f_Angle + " is not between -15 and 15.");

2)

public static int f_angle

public void Angle() 
{ ;
    if (f_angle <= 15 && f_Angle >= -15)
    {
        fAngle = 1000 * f_Angle * Math.PI / 180000;
    } else
        system.out.println("Firing Angle: " + f_Angle + " is not between -15 and 15.");
4

5 に答える 5

1

違いは、スレッドの安全性と利便性にあります。

  • 複数のスレッドから同時に最初のメソッドを正常に呼び出すことができます。これは、2 番目の方法では不可能です。
  • f_angleメソッドのパラメーターであることは、呼び出し元には明らかです。2番目の方法にはそのような明確さはありません。
于 2012-11-03T03:02:00.953 に答える
0

例 2は、 Angleという名前のメソッド(小文字で始まる必要があります)を実装するクラスの変数を操作します。

例 #1は、 Angleメソッドにどこかから渡されたパラメーターを操作します。

@dasblinkenlight が指摘したように、これはスレッドの安全性に影響します。

于 2012-11-03T03:07:16.373 に答える
0

あなたの質問に対する答えとして私が見ているのは、ローカル変数とグローバル変数の違いです。これらは、変数の有効期間スコープによって区別されます。

関数のパラメーターを定義すると、ローカル変数のように機能し、関数の実行が完了すると、変数は破棄されます (例 #1)。また、変数のスコープは関数ブロックのみに限定されます。

ただし、関数の実行が終了し、すべての関数からアクセスできる場合でも、グローバル変数 (例 #2) は存在します。

于 2012-11-03T03:29:40.410 に答える
0

パラメーターはメソッド シグネチャに追加されます。名前は同じですが、署名が異なるため、メソッドは異なります。そうすれば、オーバーロードされたメソッドを作成できます。

于 2012-11-03T03:00:16.003 に答える
0

これはメソッドのオーバーロードと呼ばれます

メソッドは通常、操作の特異性を高めるため、または呼び出し元がメソッドの操作方法をより柔軟に制御できるようにするために、オーバーロードされます。

于 2012-11-03T03:01:31.703 に答える