人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: creativeZ
●カテゴリ:コンピュータ インターネット
✍キーワード:Java メソッド 勉強 引数 戻り値
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● llusall
●30ポイント

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

[java] 関数の戻り値

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

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


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

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

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

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


2 ● ma-kanoh
●30ポイント

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

}


3 ● iwaim
●30ポイント

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

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

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

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


4 ● kishiro
●30ポイント

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

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

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

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

■例

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

引数:お金

返り値:商品

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

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

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


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

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

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

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

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


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

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

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

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

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

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


5 ● coupledaysoff
●30ポイント

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

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

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

の連続なのです。

たとえば、『「とある数字」を「ヒント」として与えますので、「【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文も消えます。


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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ