例如,我有这个类:
public class Col {
static void test(int a)
{
System.out.println("int");
}
public static void main(String args[])
{
Col.test(12); //1
Col.test((byte)12); //2
Col.test((long)100); //3
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有兴趣了解algoritm如何使用这段代码.我想,这个步骤:
1行 - 所有正确的调用方法与int param,完美.
2行 - 带字节参数的调用方法... oooops.做什么?Java尝试将byte扩展为int?这是真的?
3线呼叫方法与长参数...再次ooops.做什么?转换long到int java不行,因为精度损失.它的尝试?结果 - 例外.
比我添加这个:
public static void test(Object a)
{
System.out.println("Object");
}
Run Code Online (Sandbox Code Playgroud)
如果是电话:
Col.test((long)100);
Run Code Online (Sandbox Code Playgroud)
所有正确,没有异常所以,原始类型long和Object之间的关系是什么?
是的,有从隐式转换byte到int,但是从没有隐式转换long到int(因为信息丢失的可能性).
在第三种情况下,您使用自动装箱将long(原始类型)转换为(Long类型).
您可以通过将主体更改test为:
public static void test(Object a)
{
System.out.println(a.getClass());
}
Run Code Online (Sandbox Code Playgroud)
然后打印出来class java.lang.Long.
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |