2016-05-04 4 views
-1

「適切な」数学と同様に、角括弧を使用するとメソッドの順序が変わります。かっこ(かっこ)はメソッドの順序を変更しますか?

例えば、

System.out.println(Math.abs(Math.min(-6,3))); 

は、出力6を与える絶対値が算出される前math.minがその仕事をしていませんので、このですか?

私は、これが事実であることを確認したいと思います。それは、数学クラスの奇妙なものではありません。

ありがとうございました

+2

*これは、絶対値が計算される前にmath.minがジョブを実行するためですか?*はい。 –

+0

これは常にJavaのケースであり、数学クラスだけではありませんか? ありがとうございました –

+0

'Math'メソッドには特別なものはありません。それらは他のクラスの他のメソッドと同様に、単なるメソッドです。 –

答えて

4

これはかっこの順序の結果ではありません。オペレータの操作中に括弧を使用して操作の順序を指定することは、構文の問題です。

Javaでのメソッド呼び出しはmethodName(arguments)で行われます。これは、表現方法を表現することができなかったことを意味します。そのような括弧は、優先順位を表すためには使用されませんが、実際には言語の構文の一部です。

メソッドは、呼び出しが行われる前に引数を評価する必要があるため、Math.absより前にはMath.minを評価する必要があります。

1

はい、チェーン/ネストされたメソッド呼び出しを使用すると、メソッドの順序が変更されます。非常に内側のメソッドが最初に実行され、次にそのメソッドが実行されます。内部メソッドは最初に評価されなければなりません。そのため、そのメソッドは実際に引数として渡される値を持ちます。メソッドチェーンが外部から開始された場合、最初のメソッドの引数/パラメータは評価されないため、コンピュータはそのメソッドに渡す値を認識しません。

1

はい、Math.minが最初に計算され、続いてMath.absが計算されます。数学クラスで学んだルールもプログラミングに適用されます。

Math.abs(Math.min(-6,3)); 
Math.abs(-6); 
6 
関連する問題