黑马程序员技术交流社区

标题: Object数组和Sting数组等对象数组的关系疑问 [打印本页]

作者: 吴立杰    时间: 2012-8-2 21:01
标题: Object数组和Sting数组等对象数组的关系疑问
Object[] objs = new Object[3];
String[] strs = (String[])objs;//编译通过,但是运行后无法转换

张老师说因为Object[] 不是String[] 的父类,所以不存在强转,但是为什么强转却通过了呢?

作者: 冯华亮    时间: 2012-8-2 21:11
你可以这样写好了
Object[] objs = new Object[n];
String[] strs = new String[n];
for(int i=0;i<n;i++)
{
strs[i]=(String)objs[i];
}
objs[i]元素类型是Object,通过强制转换成String类型的strs[i]元素
作者: 王龙彪    时间: 2012-8-2 21:12
  1. Object[] objs = new String[3];
  2. String[] array = (String[])objs;
复制代码
这样才可以强转
作者: 尤洋    时间: 2012-8-2 21:40
Object[] 不是String[] 的父类,所以不存在强转,这是逻辑问题,而编译只检查语法问题。
在运行时才会检查逻辑问题
作者: hello world    时间: 2012-8-2 22:06
这和Child extends Parent  一样   Person p=new Person();Child c=(Child)p道理一样,编译能通过,运行不能通过。Person[] p=new Person[3];Child[] c=(Child[])p也是如此。Person[] p=new Child[3];Child[] c=(Child[])p这样就没问题了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2