3

これが非常に基本的なものである場合は申し訳ありません。これを検索する方法がわかりませんでした。

戻ってきたばかりの試験の例を調べていますが、ここにいくつかの理解エラーがあったと思います. 与えられたコードは次のとおりです。

public static void main(String[] args) {
    int i, i1 = 2, i2 = 4;
    double d, d1 = 3.0, d2 = 4.5;
}

static void foo(int x, double y) {
    double z = x + y;
    System.out.println("Value of foo is " + z);
}

static double foo(double x, double y) {
    return x - y;
}

static int foo(double x, int y) {
    int z = (int) (x + y)
    return z;
}

d次に、さまざまなメソッド呼び出しについて、値の戻り値、出力の出力、またはエラーの説明 (doubleが初期化されていない可能性があるなど) を提供するように求められます。

私の質問は次のとおりです。

  1. 操作はパーツで何(int)(x+y)をし(double x, int y)ますか? 明らかに乗算ではありません。それを理解できませんでした。

  2. 一部のメソッド呼び出しでは、2 つintの が要求されます。Java はそれらをdoubles に変換しますよね?

4

6 に答える 6

4

あなたの場合、それは Type Casting - (Down Sizing) です。

あなたの例では x は double であり、y は int であるためです。x+y は double を返します。

int z は double 値を指しているため。Int への Type キャストで小型化されます。

于 2013-06-04T03:36:28.987 に答える
1

操作はパーツで何(int)(x+y)をし(double x, int y)ますか? 明らかに乗算ではありません。それを理解できませんでした。

は型キャストです。加算の結果が としてキャストされることを意味しintます。

一部のメソッド呼び出しでは、2 つintの が要求されます。Java はそれらをdoubles に変換しますよね?

いいえ、Java はそれを行いません。intdouble価値観が異なります。

于 2013-06-04T03:37:01.777 に答える
1
  1. (int)(x+y)doubleからへの結果のキャストですint

  2. Java は int を double に強制しません。それらは数値の異なる表現です。

于 2013-06-04T03:37:13.137 に答える
0
  1. x = 4.5 かつ y =5 でメソッド foo(x,y) を呼び出すと、メソッド定義 foo(double x, int y) が呼び出されます。Java JVM では、引数に一致するクラスをロードします。x と y の合計は、2 倍の 9.5 になります。そして、(int) は単純に 9.5 の double 値をその int 値である 9 にキャストする型です。

  2. 2 つの int の合計は常に int であり、int と double の合計は double 値を返します。

于 2013-06-04T03:50:29.253 に答える
-2

double+ int==double

return 5/2   // returns 2 (not turned into doubles)
return 5.0/2 // returns 2.5 (turned into doubles)
return (int)(5.0/2)  // returns 2 (turned into doubles, then turned into int)
return 5d/2 // returns 2.5 (turned into doubles)
于 2013-06-04T03:36:20.360 に答える