当前位置: 技术问答>java相关
十万个为什么?高手解惑,拜托~~~
来源: 互联网 发布时间:2015-02-06
本文导语: class Point { int x, y; } class ColoredPoint extends Point { int color; } class Test { public static void main(String[] args) { ColoredPoint[] cpa = new ColoredPoint[10]; Point[] pa = cpa; System.out.println(pa[1] == null); try { pa[0] = new...
class Point { int x, y; }
class ColoredPoint extends Point { int color; }
class Test {
public static void main(String[] args) {
ColoredPoint[] cpa = new ColoredPoint[10];
Point[] pa = cpa;
System.out.println(pa[1] == null);
try {
pa[0] = new Point();
} catch (ArrayStoreException e) {
System.out.println(e);
}
}
}
produces the output:
true
java.lang.ArrayStoreException
能给小第一个答案吗?
class ColoredPoint extends Point { int color; }
class Test {
public static void main(String[] args) {
ColoredPoint[] cpa = new ColoredPoint[10];
Point[] pa = cpa;
System.out.println(pa[1] == null);
try {
pa[0] = new Point();
} catch (ArrayStoreException e) {
System.out.println(e);
}
}
}
produces the output:
true
java.lang.ArrayStoreException
能给小第一个答案吗?
|
不对,上面的说法不对,数组在任何位置都会被自动初始化(不管是类成员,还是在方法内声明)错误应该是“pa[0] = new Point();“ 因为pa其实是指向一个ColoredPoint数组,而这里实际上是把用一个派生类指向基类,当然是错的!
|
如果你有这句:
cpa[0]=new ColoredPoint();
在
System.out.println(pa[1] == null);
前
那么你就对了!
----------------------------
ColoredPoint[] cpa = new ColoredPoint[10];
只是定义了一个10个元素的数组,里面的元素没有初始化
要
for(int i=0;i
cpa[0]=new ColoredPoint();
在
System.out.println(pa[1] == null);
前
那么你就对了!
----------------------------
ColoredPoint[] cpa = new ColoredPoint[10];
只是定义了一个10个元素的数组,里面的元素没有初始化
要
for(int i=0;i