2016-06-20 4 views
0

私はJavaでコーディングする方法を学んでいます。私はちょっと混乱して "復帰"しています。それが何をするのか、それをいつ使うのかということです。次のコード例を参照してください。その後、使用リターン関数と変数の格納の違いは何ですか?

public int something() { 
    return 1; 
} 

public static void main() { 
    int returnValue = something(); 
    System.out.println(returnValue); 
    //Prints 1 
} 

なぜ我々だけint型の変数と呼ばれるものに1を格納していないでしょうがSystem.out.print(something);

我々は単に変数に保存するのではなく、復帰方法を使用することになり

は、変数に格納することができますが、あなたは非常に重要な機能の一つは、それ自体の内部でメソッドを呼び出すための、すなわち能力を失うことになる

+0

'add(1,2);'リターン関数なしでこのメソッドから値3を取得する方法を提案しますか? – Compass

+0

'something()'が単に 'return 1'以外の何かをやっているのなら、どうしたらいいですか?すべての作業を終えるまで、あなたが戻ってきたいものが「1」であることを知らないので、「1」を割​​り当てることはできません。 – azurefrog

+0

'something()'から返されるオプションがたくさんある場合、変数は値1のみを格納できません。そうであれば変数でもなく定数です。 – GuiDupas

答えて

3

は確かにありがとうございます。

これは、仕事を小さな塊に分割し、小さな塊で自分自身を呼び出す(そして個々の結果を大きな結果に結合する)アルゴリズムに関係します。これは、ソートアルゴリズムでは非常に一般的です。技術用語はの再帰です。

通常、コンパイラは実際にを実行します。正確にはです。呼び出しコードがそれを受け取ることができる場所からの値を格納するための変数を作成します。この変数は通常、呼び出されたメソッドに渡されるパラメータと同じ場所(スタック)に配置され、コードからは見えません。

(最近のCPU上で複数のコアを利用するために不可欠なスレッドセーフにする必要もあります)。

+0

これは完全に説明しました、ありがとう! –

関連する問題