如果我打电话
methodName(5, 1/2);
它有签名
public static int methodName(int x, double y){
}
methodName
接收的y
值为0
or0.5
吗?
int y = 1/2;
此时,y 为 0。如果您之后尝试将其强制转换为 double,则它将为 0.0。它不记得它是如何获得它的价值的,只记得它的价值是什么。
编辑:我认为编译器实际上会1/2
在编译时替换为 0 。使代码字面上与int y = 0
它将评估为 0。
你可以用上面的代码做很多事情。
将 y 存储为 int 应该没有特定的理由。
试试这个:
double y = 1/2.0;
int y = 1/2;
在此代码中,y 将为 0;
如果你想得到它为 0.5
试试下面的代码:
double y = 1.0 * 1 /2; //y is 0.5
int y = 1/2
由于您使用 1 (int) 和 2 (int) 进行除法,因此它是整数除法,因此y = 0
(余数 (%) 为 1)。
我认为您对参数(括号)感到困惑。在 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 库中的大多数方法都被编写为将双精度数作为参数而不是浮点数