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