2017-02-28 4 views
2

として配列を使用:私は、パラメータとして配列を使用しての詳細を理解していないパラメータ

私はint型の配列とメソッドを作成していると見られるように、それは、パラメータの名前を変更することが可能ですなぜ私は理解していません下の "ノート"から "veraenderung"。

Javaはどのようにパラメータを処理しますか?メソッド(注釈)を呼び出してもパラメータが必要ですか?

public class ArrayParameter { 

    public static void main(String[] args) { 
     int[] note = {3,2,1,4,5}; //Array 
     int[] note2 = {3,2,1,4,5}; 
     korrektur(note); 
     korrektur2(note2); 
    } 

    //Der Methode "korrektur" wird der int Array (note) übergeben! 
    public static void korrektur (int note[]) { 
     for (int i = 0; i<note.length; i++) { 
      //Sobald die for Schleife aufgerufen wird, werden die jeweiligen Werte um -1 reduziert 
      note[i]-=1;       
      System.out.println(note[i]);  
     } 
    } 

    //int "veraenderung" ist ein Parameter 
    public static void korrektur2 (int veraenderung[]) { 
     for (int i = 0; i<veraenderung.length; i++) { 
      //Sobald die for Schleife aufgerufen wird, werden die jeweiligen Werte um -1 reduziert 
      veraenderung[i]-=1;      
      System.out.println(veraenderung[i]); 
     } 
    } 
} 
+0

メインメソッドで 'int array'に割り当てた名前は、' korrektur'メソッドでは関係ありません。 'korrektur'メソッドが気にするのは、呼び出されたときに' int配列 'を受け取っているということです。 – Seth

+0

その名前の変数が1つだけ存在する限り、任意の変数を好きなように呼び出すことができます。 –

+0

注: 'int variable []'ではなく 'int [] variable'を使用してください。後者の形式では、C++プログラマを寛容化することができます。変数の型は 'int []'なので、そこに '[]'を入れてください。 –

答えて

0

私はあなたが理解するために可能な限り小さくし、それを打破しようとします。)...

あなたはメソッドを作成する場合。例:public static void korrektur2 (int veraenderung[]) int veraenderung []はあなたの望むところに名前をつけることができます。主なものは、大括弧の中のどこかにint []を置くことです。

名前veraenderung自体は、(そのメソッド内で)ローカルに(そのメソッド内で)そのメソッドに構文解析したものが動作するようにtell javaの参照としてのみ使用されます。

たとえば、上記のメソッドを呼び出すと、korrektur(note);と答えたとき。 noteは前に配列として宣言されていたので、メソッドkorrekturの中に 'note'を入れると、veraenderungをメモに置き換えることと同じです。つまり、javaはローカル変数をメソッドに渡したものに置き換えます。

あなたの質問に答えるには...整数配列をとるメソッドを作成してから...はい、メソッドを呼び出すときに常に "内部に整数配列を置く"必要があります。私。メソッドkorrektur2またはkorrekturを呼び出すたびに、整数配列を内部に入れないと、Javaは "ちょっと、整数配列を取るように作成されていて、どうして空にするのですか? ?!? "

私はこれがあなたの質問に解決を願って:)

+0

素晴らしい説明のためのThx! – vonmentzer

1

korrekturkorrektur2は、それらのそれぞれは、2人の独立した署名を持つだけで2種類の方法ですパラメータの名前を変更することが可能である理由を私は理解していません。彼らは全く同じではありません(プログラマーが同じように名前をつけても、まったく同じように);

パラメータの名前は、メソッドブロックで便利なローカル名です。

パラメータでjavaを処理するにはどうすればよいですか?メソッド(注)を呼び出してもパラメータが必要ですか?

これらのパラメータは必須です。したがって、それらをメソッド呼び出しに挿入する必要があります。

0

あなたがの.classファイルを見ている場合は、パラメータが同じである見つけることができます。
あなたは概念「vars Scope」(これかもしれません)を理解する必要があります。パラメータ 'paramArrayOfInt'がkorrektur()に影響を与えると、それは破壊されます。次の方法では、それはちょうど新しいものです。それは私の理解です。間違っているかもしれない、議論に歓迎。

public class ArrayParameter 
{ 
    public static void main(String[] paramArrayOfString) 
    { 
    int[] arrayOfInt1 = { 3, 2, 1, 4, 5 }; 
    int[] arrayOfInt2 = { 3, 2, 1, 4, 5 }; 
    korrektur(arrayOfInt1); 
    korrektur2(arrayOfInt2); 
    } 

    public static void korrektur(int[] paramArrayOfInt) 
    { 
    for (int i = 0; i < paramArrayOfInt.length; i++) 
    { 
     paramArrayOfInt[i] -= 1; 
     System.out.println(paramArrayOfInt[i]); 
    } 
    } 

    public static void korrektur2(int[] paramArrayOfInt) 
    { 
    for (int i = 0; i < paramArrayOfInt.length; i++) 
    { 
     paramArrayOfInt[i] -= 1; 
     System.out.println(paramArrayOfInt[i]); 
    } 
    } 
} 
関連する問題