質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1405閲覧

Javaのreturn文の順序について

beginnerF

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/11/19 04:36

Java初心者です。
以下のソースコードを実行すると結果が34になります。

class Main {
public static void main(String[] args) {
int a = 10;
System.out.println(method1(a)); //method1に飛ぶ
}

public static int method1(int a) { //method1宣言 return method2(a + 1) * 2; //(10+1)*2 } public static int method2(int a) { //method 2 宣言 return method3(a / 2) + 2; //(10/2)+2 } public static int method3(int a) { //method 3 宣言 return a + 10; //10+10 }

}

return文が飛ぶこととaの数値が変わることはわかるのですが
どの順番で計算されたのかがわかりません。

計算された順番を教えていただけませんか?
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

呼んだ順に処理しますが、メソッドの中でメソッドを呼んだ場合
その戻り値を使ってreturnします。(いわゆるスタック

なので呼んだ順、計算された順は

method1 に 10が、渡されます
method2 に 11が渡されます(10+1)
medhod3 に 5 が渡されます(11/2)
method3 が 15 をreturnします。(5+10)
method2 が 17 をreturnします。(15+2)
method1 が 34 をreturnします。(17*2)

に、なります。

投稿2021/11/19 04:49

momon-ga

総合スコア4826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginnerF

2021/11/19 04:54

ありがとうございます! とてもわかりやすくて勉強になりました。
guest

0

ベストアンサー

  1. mainではa=10なので、method1(10)の計算に入ります。
  2. method1でa=10なので、method2(10 + 1) * 2を返そうとしますが、ここでmethod2(10 + 1)の計算に入ります。
  3. method2でa=11なので、method3(11 / 2) + 2を返そうとしますが、ここでmethod3(11 / 2)の計算に入ります。
  4. method3でa=5なので、5+10,すなわち15を返します。
  5. 3でmethod3(11 / 2)が15とわかったので、15+2=17を返します。
  6. 2でmethod2(10 + 1)が17とわかったので、17*2=34を返します。
  7. 34が出力されます。

投稿2021/11/19 04:48

swordone

総合スコア20669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginnerF

2021/11/19 04:56

ありがとうございます。 とてもわかりやすくて きちんと理解することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問