メソッドの引数


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

java

メソッドの引数

  • Javaでは引数に値を渡す場合、常に 値渡し
public void setNumber(int number)
{
  number = 100;
}
※このメソッドで、引数で渡されたnumberを、100に置き換えようとしているが、変更されない。

int number = 10;
obj.setNumber(number);
System.out.println(number);     // 100ではなく10が表示される。
※これは、呼び出し元からnumberという変数を渡すわけではなく、numberに格納されている10という値が
  setNumber()メソッドの引数に定義されているnumberにcopyされているため。
※呼び出しもとのnumberとメソッドの引数リストのnumberは別の変数であるため、setNumber()内で
  numberを変更しても呼び出し元の変数に影響はない。

  • 参照型( 配列型やクラス型 )を使うと、メソッドにはインスタンスを参照する値を渡すため、変更することが可能
public void setArray(int [] array)
{
  for(int i=0; i<array.length; i++)
    array[i] = 100;
}

int[] array = {1,2,3,4,5}
obj.setArray(array);
※array[]の各要素はすべて100に置き換わる。

メソッドのオーバーロード

  • System.out.println()を呼び出すと、メソッド名は同じだが引数を渡さなかったり、異なる型の引数を渡している。
  • System.out.println()を呼び出すと、Systemクラスのoutというスタティックフィールドに格納されているオブジェクトのprintln()を呼び出す。
  • outはPrintStream型であるので、println()はもともとPrintStreamクラスで定義されているメソッド。
  • PrintStreamではprintln()は数多く定義されている。(JDKのAPIドキュメント参照)
void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
  • 同じ名前で引数の数や型の異なるメソッドを定義することを メソッドのオーバーロード という。
  • オーバーロードにより引数の異なるメソッドを同じ名前で定義しておくと、コンパイラはそのメソッドの宣言と、メソッドの呼び出しで渡された引数を照合し、引数の型と数が一致するメソッドを選択してくれる。( オーバーロードの解決 )

sample

public class OverloadTest
{
  public static void main(String[] args)
  {
    int[] array = {1,2,3,4,5};
    OverloadTestClass obj = new OverloadTestClass();
    
    int ret = obj.sumNUmber(array);
    System.out.println("setNUmber(int[]) returns ----->" + ret);
    
    int ret = obj.sumNumber(1,2,3);
    System.out.println("setNumber(int,int,int) returns ----->" + ret);
    
    int ret = obj.sumNumber("1","1023");
    System.out.println("setNUmber(String,Strin) returns ----->" + ret);
  }
}

class OverloadTestClass
{
  public int sumNumber(int[] array)
  {
    int sum = 0;
    for(int i=0; i<array.length; i++)
      sum += array[i];
    return sum;
  }
  
  public int sumNumber(int n1,int n2,int n3)
  {
    int[] array = {n1,n2,n3};
    return sumNumber(array);
  }
  
  public int sumNumber(String s1,String s2)
  {
    int s1,s2;
    n1 = Integer.parseInt(s1);
    n2 = Integer.parseInt(s2);
    return sumNumber(n1,n2,0);
  }
}
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。