据我所知,Java具有自动转换功能,因为不会丢失数据,因此可以将兼容的数据类型从较小的转换为较大的数据,但是在我的JDK 8初学者指南的测试程序之一中,是以这种方式使用转换的。 燃料需求的方法是有问题的。 我知道它可以在不进行强制转换的情况下打印出相同的双重结果,所以为什么需要这样做?是吗?
class Vehicle {
int passengers;
int fuelcap;
int mpg;
Vehicle (int p, int f, int m) {
passengers = p;
fuelcap = f;
mpg = m;
}
int range() {
return mpg * fuelcap;
}
double fuelNeeded(int miles) {
return (double) miles / mpg;
}
}
public class CompFuel {
public static void main(String[] args) {
Vehicle minivan = new Vehicle(7, 16, 21);
Vehicle supra = new Vehicle(2, 14, 12);
double gallons;
int dist = 252;
gallons = minivan.fuelNeeded(dist);
System.out.println("To go " + dist + " miles, minivan needs " + gallons + " gallons of fuel");
gallons = supra.fuelNeeded(dist);
System.out.println("To go " + dist + " miles, supra needs " + gallons + " gallons of fuel");
}
}
答案 0 :(得分:1)
如果尝试删除强制类型转换,并尝试类似1/2
的操作,则返回值为0.0
。使用强制转换时,返回值为0.5
。
由于强制转换而存在差异-将变量miles
显式转换为double
使整体除法成为double
和int
之间的除法,这使我们double
值。不进行强制转换将导致int
划分。