JAVAを勉強しています。

メソッドの引数、戻り値の考え方がよくわかりません。
助けてください。

回答の条件
  • 1人5回まで
  • 登録:2006/04/11 22:05:37
  • 終了:2006/04/13 22:17:32

回答(5件)

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/04/11 23:10:37

ポイント30pt

[java] 関数呼び出しと引数の受け渡し

[java] 関数の戻り値

http://www.soi.wide.ad.jp/class/20030007/materials_for_stude...

※値渡し、参照渡しの考え方を押さえておくと良いと思います。


よくある誤解、あやふやな知識

String型の引数の値をメソッド内で変更したのに、呼び出し元に結果が反映されません

http://www.javaworld.jp/technology_and_programming/-/27074-2...

※最初にありがちな質問です。

id:ma-kanoh No.2

ma-kanoh回答回数155ベストアンサー獲得回数42006/04/11 23:13:03

ポイント30pt

www.objectclub.jp/event/ 2003christmas/pdf/object_brain.pdf

「オブ脳」になれ~と呪文をかけられてみるとか。

意外と冗談ではありませんけど。

どっから行きますかね、、、どれでも好きなやつで理解してください。

どれも一緒のことを言っています。


(1)理論的

「関数」とは。あるy=f(x)となる、関数f(x)を定義する。

メソッドとは「関数」である。

メソッドの引数とはxであり、戻り値はyである。

(2)オブジェクト指向的

「もの」===「オブジェクト」に指示を与える方法。

object a {

処理結果 指示a(処理用データ);

}

処理結果 = a->指示a(処理用データ);

メソッドの引数とは処理用データであり、戻り値は処理結果である。

Javaじゃないな、、考え方としてだけ見てください。

Javaでは、objectはclassといいます。

classはオブジェクト集合を定義するキーワードです。

(3)言語仕様的

Javaのメソッドは「クラス」内の処理定義を指す。

methodAはクラスaの処理定義を行う部分。

メソッドの引数とはString aであり、戻り値はreturnとして戻す。

class a {

int methodA(String a) {

return a.toInteger();

}

}

class b {

main () {

class a = new class a();

int i = a.methodA("1");

}

id:iwaim No.3

iwaim回答回数215ベストアンサー獲得回数192006/04/12 03:15:41

ポイント30pt

メソッドの引数、戻り値の考え方がよくわかりません。

オブジェクト指向とかそういうのは抜きにしてメソッドだけを解説すればいいんでしょうか。

「メソッド」は「何か処理をしてくれるもの」です。メソッドに「値(引数)」を渡すとそれを使って何か処理を行って「値(戻り値)」を返してきます。

なお、引数、戻り値は存在しないこともあります。

id:kishiro No.4

kishiro回答回数161ベストアンサー獲得回数42006/04/12 03:25:34

ポイント30pt

オブジェクト指向言語なので、モノにたとえると分かり易いです。

メソッドは、なんらかの仕事をして解決する方法のことです。

その時に、与えるモノ(引数)が存在する場合や

受け取るモノ(戻り値)が存在する場合があります。

■例

メソッド:自動販売機で商品を買う

引数:お金

返り値:商品

自動販売機という処理装置に

お金を引数として与えると

返り値に商品が出てきます。


■引数の参照渡し(オブジェクト)

引数として渡した場合、渡したモノを参照元と参照先で共有します。

メソッドに引数として財布を渡した場合、

メソッドの呼び出し先で、財布の中のお金を使うと

当然メソッドの呼び出し元でも、財布の中のお金は減っています。


■引数の値渡し(intなどのプリミティブ型)

引数として渡した場合、渡した値のコピーがメソッドに渡ります。

メソッドに引数として1000円を渡した場合、

メソッドの呼び出し先で800円使えば、呼び出し先では残金200円です。

しかしメソッドの呼び出し元では、残金は1000円のままです。

http://www-ise2.ist.osaka-u.ac.jp/~iwanaga/study/csharp/sp_r...

id:coupledaysoff No.5

coupledaysoff回答回数1ベストアンサー獲得回数02006/04/12 11:40:54

ポイント30pt

プログラミングというのは、

「ヒント」を与えるから、「質問」「答え」を教えてください』

『前の質問で「答え」を教えてもらいました。その「答え」を「ヒント」にしますので、次の質問の「答え」を教えてください』

の連続なのです。

たとえば、『「とある数字」を「ヒント」として与えますので、「【1からその数までの総和は?】という質問」の「答え」を教えてください』という思いがあるとします。

この思いを叶えるため、「質問」をベタに書くこともあります。たとえば、

int toaruSuuji = 3;

// ↓「質問」をベタに書きました。

int souwa = 0;

for (int tochu = 1; tochu <= toaruSuuji ; tochu++ )

{

// 今までの総和に、途中の値を足して、新しい総和にする。

souwa = souwa + tochu ;

}

int kotae = souwa ;

といった具合にです。

「とある数字(toaruSuuji)」を与えて、【1からその数までの総和は?】という「質問」を for文を利用してベタに書いています。


一方、思いを「メソッド」という形で書くこともあります。たとえば、

int toaru_suuji = 3;

// ↓「質問」をメソッドで書きました。

int kotae = souwa(toaru_suuji);

(中略)

// メソッドの中身

public int souwa(int hintHikisu)

{

int modoriChi = 0;

for (int tochu = 1; tochu <= hintHikisu; tochu++ )

{

// 今までの総和に、途中の値を足して、新しい総和にする。

modoriChi = modoriChi + tochu ;

}

return modoriChi;

}

この souwaメソッドの中身を良く見てください。 hintHikisu という「ヒント」を与えられて、【1からその数までの総和は?】を計算して、その「答え」をreturn しています。

ここまでくるとお分かりかもしれません。

「質問」が「メソッド」となる場合、

  • 「ヒント」「引数」となり、
  • 「答え」「戻り値」になる

のです。


ここまで理解が進んだとして、話を次の段階に進めます。

「答えも欲しいけど、ちょっと途中経過を画面で知りたいんだよね」という思いが発生する場合があります。

たとえば、以下の書き方をするかも知りません。

public int souwa(int hintHikisu)

{

int modoriChi = 0;

for (int tochu = 1; tochu <= hintHikisu; tochu++ )

{

// 今までの総和に、途中の値を足して、新しい総和にする。

modoriChi = modoriChi + tochu ;

System.out.println( tochu + "までの総和->" + modoriChi );

}

return modoriChi;

}

はたまた、「今回は答えはいらない。途中経過だけ画面で知りたい」という思いが発生するかもしれません。

そんなときはどうするのでしょう?「答え」=「戻り値」がいらない場合は、キーワードをvoid 使います。

public void souwa(int hintHikisu)

{

int modoriChi = 0;

for (int tochu = 1; tochu <= hintHikisu; tochu++ )

{

// 今までの総和に、途中の値を足して、新しい総和にする。

modoriChi = modoriChi + tochu ;

System.out.println( tochu + "までの総和->" + modoriChi );

}

}

void を指定すると、「答え」=「戻り値」がいらないと言っているので、return文も消えます。


とまぁ、こんな感じです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません