1

如果我打电话

methodName(5, 1/2);

它有签名

public static int methodName(int x, double y){
}

methodName接收的y值为0or0.5吗?

4

5 回答 5

3

int y = 1/2;

此时,y 为 0。如果您之后尝试将其强制转换为 double,则它将为 0.0。它不记得它是如何获得它的价值的,只记得它的价值是什么。

编辑:我认为编译器实际上会1/2在编译时替换为 0 。使代码字面上与int y = 0

于 2013-11-11T16:40:16.297 回答
0

它将评估为 0。

你可以用上面的代码做很多事情。

将 y 存储为 int 应该没有特定的理由。

试试这个:

double y = 1/2.0;
于 2013-11-11T16:39:55.367 回答
0
int y = 1/2;

在此代码中,y 将为 0;

如果你想得到它为 0.5

试试下面的代码:

double y = 1.0 * 1 /2; //y is 0.5
于 2013-11-11T16:42:38.757 回答
0
int y = 1/2

由于您使用 1 (int) 和 2 (int) 进行除法,因此它是整数除法,因此y = 0(余数 (%) 为 1)。

于 2013-11-11T16:43:03.257 回答
0

我认为您对参数(括号)感到困惑。在 java 中,每个方法都有一组参数(它们可能不包含值,例如:exampleMethod())。

参数是传递给方法的变量,因此在您的代码中调用时:

methodName() initialize it with methodName(x,y);

方法中的 x 和 y 只是您通过参数传递的值的指针。我建议您以不同的方式命名变量以避免这种混淆。例如:

int x;
int y;
methodName(int argX, double argY)
{

}

另外要回答您的问题,int 会在小数点处截断其存储值,因此 5.9 将舍入为 5 而不是 6,因此如果您需要 y 的浮点变量,请将其声明为 float 或 double会起作用,但 java 库中的大多数方法都被编写为将双精度数作为参数而不是浮点数

于 2013-11-11T16:49:41.000 回答