java使用不同的变量类型进行计算
我现在正在阅读赫伯特·席尔德的《Java:Complete Reference》,有一件事我还不太清楚。在关于整数的章节中,它说当需要大的整数时,应该使用long类型。书中的代码示例:
// Compute distance light travels using long variables
class Light {
public static void main(String args[]) {
int lightspeed;
long days;
long seconds;
long distance;
// approximate speed of light in miles per second
lightspeed = 18600;
days = 1000; // specify number of days here
seconds = days * 24 * 60 * 60; // convert to seconds
distance = lightspeed * seconds; // compute distance
System.out.print("In " + days + " days light will travel about " + distance + " miles.");
}
}
执行时,控制台会向我提供这样的结果:
"In 1000 days light will travel about 16070400000000 miles."
根据我的逻辑,days和seconds变量也应该是int,而它们的值小于2147483647
在这个例子中,天=1000,秒=86400000,所以值没有那么大
但当我声明这样的变量时:
int lightspeed, days, seconds;
long distance;
我有一个奇怪的结果,现在我无论如何也不能接受
"In 1000 days light will travel about -1367621632 miles."
请帮帮我
# 1 楼答案
是的,正如埃兰所指出的,只有距离是相关的
如果你只想到除数,这种行为很容易记住
如上所述,
a / b
执行整数除法(截断),假设a和b是整数,而我会给你双份的
请注意,演员阵容总是指其后的内容。因此,在一个只包含两个整数的表达式中,第一个整数被转换为double
`