【JAVA】Java前两章一些深入理解和问题

本文探讨了Java中对象转换与数组操作的相关概念。1. 创建了一个Student对象并将其强制转换为Person(Person是Student的父类)。2. 定义了一个Person类型的数组stus,初始化为10个null,实际并未分配Student对象。3. 使用for-each循环,尝试将数组元素设为Teacher类型,虽然编译通过,但在运行时会抛出ArrayStoreException。4. 直接将数组元素设置为Teacher类型会导致ArrayStoreException,因为数组类型为Student。

1.

Person stu = new Student();

new了一个student对象,强制转换为了person,因为person是student的父类,所以可以进行

2.

Person[] stus = new Student[10];

左边是定义了一个Person数组,叫做stus,右边是创建了10个null,实际上啥也没干,但是右边必须能类型转换为左边。

3.

for (Person p : stus) {
    p = new Teacher();
    p.raiseSalary(1);
}

进行这段代码,输出全是teacher,也着实说明了右边确实没用,根据官方的话来说,右边是initializes an array of 10 Students,那你初始化不就是10个null。这块有点怪,用这个for循环的时候,p不能是student。

4.

for (int i = 0; i < 10; i++) {
    stus[i]=new Teacher();
}

这个for循环会抛出异常,说Storing element of type 'Teacher' to array of 'Student' elements will produce 'ArrayStoreException'。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值