如果我打电话
methodName(5, 1/2);
并且它有签名
public static int methodName(int x, double y){
}
methodName
是否会收到y
,其值为0
或0.5
?
答案 0 :(得分:3)
int y = 1/2;
此时,y为0.如果您尝试将其转换为双精度,则它将为0.0。它不记得它是如何得到它的价值的,它的价值是什么。
编辑:我认为编译器实际上会在编译时将1/2
替换为0。使代码与int y = 0
答案 1 :(得分:0)
评估为0。
使用上述代码并不是很多。
没有特别的理由将y存储为int。
请改为尝试:
double y = 1/2.0;
答案 2 :(得分:0)
int y = 1/2;
在此代码中,y将为0;
如果你想把它变成0.5
尝试使用以下代码:
double y = 1.0 * 1 /2; //y is 0.5
答案 3 :(得分:0)
int y = 1/2
由于您使用1(int)和2(int)进行除法,因此它是整数除法,因此y = 0
(余数(%)为1)。
答案 4 :(得分:0)
我认为你对参数(括号)感到困惑。在java中,每个方法都有一组参数(它们可能不包含ex: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的浮点变量,要么将它声明为浮点数,要么double,要么都可以工作,但是java库中的大多数方法都是用双精度作为参数而不是浮点数