日期:2014-05-20  浏览次数:20733 次

谁能帮忙解释一下运行结果?
偶对转换、对象的基本概念还是不太了解,谢谢指教!

Object obj=new Integer(0);
obj=(Object)obj;
if(obj instanceof Integer) System.out.println("Integer");
else System.out.println("Object");

------解决方案--------------------
这都不用想,肯定是输出Integer啊,

obj = (Object) obj;这一句一点意义都没有。智能一点的编译器应该都会直接忽略掉。
------解决方案--------------------
多态,楼主应该理解吧。强制类型转换,转换的是引用类型,不会把你那个对象变了的
------解决方案--------------------
父子类之间上下转型。
------解决方案--------------------
obj是new Integer(0)这个对象的别名 实际上还是这个对象。
------解决方案--------------------
自下而上转换只是改变了类型,没有改变对象本身。
------解决方案--------------------
父类Object 指向了自己的子类对象 Integer 

如果爸爸(obj) 包含了(instanceof)  儿子(Integer) 那么就输出  。。。。。
------解决方案--------------------
首先这句话肯定没意义 obj=(Object)obj;
如果你要看到强转,可以这样
Integer i=new Integer(0);
Object obj=(Object)i;
if(obj instanceof Integer) System.out.println("Integer");
else System.out.println("Object");

但不管怎样,强转仅仅是引用类型发生变化(你是中国人,现在给你换个称呼地球人。然后判断你这个地球人是不是中国人,其实你还是你啊,不是吗),存储的数据结构并没有变化