正如标题中所要求的那样:当从长值中减去一个double值时,内部会发生什么?结果来自double或long类型,这种行为甚至是在Java规范中指定的还是jvm特有的这种行为?
所以我知道我可以测试自己的jvm是做什么的:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
double b = 1000;
long a = 1000;
Object c = a - b;
Class cls = c.getClass();
System.out.println("The type of the object is: " + cls.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
The type of the object is: java.lang.Double
Run Code Online (Sandbox Code Playgroud)
但这是指定的吗?或者它是否特定于我使用的jvm?
以下是规范的适用部分:
4.2.4.浮点运算
如果数值运算符的至少一个操作数是double类型,则使用64位浮点运算执行运算,并且数值运算符的结果是double类型的值.如果另一个操作数不是double,则首先将其扩展(第5.1.5节)以通过数字提升(第5.6节)键入double.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.4
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |