以下带有括号的代码会产生不同的输出。为什么呢?
System.out.println((double) 3/6); // output 0.5
System.out.println((double) (3/6)); // output 0.0
答案 0 :(得分:2)
因为在第一个示例中,您实际上正在执行((double) 3)/6
,因此结果也是双倍的。
在第二个中,您正在执行整数除法,然后您正在转换结果。 3/6 = 0
和(double) 0 = 0.0
。
答案 1 :(得分:1)
在第一个示例中,在除以int之前,将3转换为double。根据Java类型转换规则,输出是double(在这种情况下为0.5)。
在第二个示例中,您将int除以int。由于您要分割的数字小于您要分割的数字,因此答案为零。然后你只是将int 0转换为double 0。