メソッドの引数

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);
  }
}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年01月14日 22:08
ツールボックス

下から選んでください:

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