java基础疑难
答案:6 悬赏:20 手机版
解决时间 2021-11-09 13:32
- 提问者网友:爱唱彩虹
- 2021-11-09 07:33
java基础疑难
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-11-09 08:45
在(1)处,隐式的进行了一个向上转型,即将B[]转换成了A[],所以才可以在(2)处进行向下转型
注意,所有的向下转型,必须满足的条件是之前进行过向上转型追问int和byte怎么解释呢 我这里是子类和父类关系了啊追答基本数据类型的转型不在此列,不要把对象和基本数据类型的转换进行比较
注意,所有的向下转型,必须满足的条件是之前进行过向上转型追问int和byte怎么解释呢 我这里是子类和父类关系了啊追答基本数据类型的转型不在此列,不要把对象和基本数据类型的转换进行比较
全部回答
- 1楼网友:你哪知我潦倒为你
- 2021-11-09 13:08
initially, a 指向 new A[10] b指向new B[20] 。 a=b , 此时 a 指向B[20] 。 b=(B[])a 此时 b仍然指向 new B[20] 。 a=new A[10]; 此时 a 指向 new A[10] 。 b=(B[])a; 此时a是指向new A[10]的,而b是指向new B[20] 的,所以不同类型,强制转换会报exception追问(1):但是他们有子类和父类的继承关系啊 元数据类型int和byte之间可以使用上述转换,
(2):2处的转换是否完全没意义
(2):2处的转换是否完全没意义
- 2楼网友:深街酒徒
- 2021-11-09 11:47
A 和B是完全不相同的两个类型怎么能转换,就好像苹果不能转换成苹果手机一样,当然后报类型转换错误啊(java.lang.ClassCastException错误)追问1:在这之前的2处的强制转换是否完全没意义
2:子类引用指向父类对象不是可以强制转换的吗追答完全没意义,两者之间有关系的话可以强制转换,向上转型是安全的(子类转换成父类),向下转型(父类转换成子类)就不一定了。追问这里是有子类和父类的关系的 不一定指的是什么 在int和byte这种就可以转换 这种限制是什么追答int byte是基本类型,基本类型的转换具体规则:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double;
2:子类引用指向父类对象不是可以强制转换的吗追答完全没意义,两者之间有关系的话可以强制转换,向上转型是安全的(子类转换成父类),向下转型(父类转换成子类)就不一定了。追问这里是有子类和父类的关系的 不一定指的是什么 在int和byte这种就可以转换 这种限制是什么追答int byte是基本类型,基本类型的转换具体规则:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double;
- 3楼网友:玩家
- 2021-11-09 10:46
不能直接强制转换(2)处能强制转换时因为(1)处已经把a引用指向了B类
- 4楼网友:人類模型
- 2021-11-09 09:55
(1)处a=b ,将a(父类)引用已经指向了B类(子类),,,故(2)能强转,当父类指向子类时,父类可以强转成子类.
(3)a指向A类(父类),无法强转成子类.
比如A是动物,B是狗,如果这个动物A指向B狗的话就可以说这动物是狗,如果这动物一开始就单独指向动物的话,就不能说这动物是狗了.追问在元数据类型子类引用指向父类对象会损失精度 比如把 int 转换为byte
class test
{
public static void main(String [] args)
{
int a=10;
byte b=10;
b=(byte)a;
}
}
这样又不会出错 是否这种转换只能出现在元数据类型追答有父子关系的,也就是class B extends A{}.其中A是父类B是子类,子类A是可以强转成父类B的,并且当子类强转成父类是,还可以强转回去的.
(3)a指向A类(父类),无法强转成子类.
比如A是动物,B是狗,如果这个动物A指向B狗的话就可以说这动物是狗,如果这动物一开始就单独指向动物的话,就不能说这动物是狗了.追问在元数据类型子类引用指向父类对象会损失精度 比如把 int 转换为byte
class test
{
public static void main(String [] args)
{
int a=10;
byte b=10;
b=(byte)a;
}
}
这样又不会出错 是否这种转换只能出现在元数据类型追答有父子关系的,也就是class B extends A{}.其中A是父类B是子类,子类A是可以强转成父类B的,并且当子类强转成父类是,还可以强转回去的.
- 5楼网友:春色三分
- 2021-11-09 09:40
简单的说吧,B继承A ,有所有的A的变量,方法,可以增加一些B特有的变量,方法。
当 (1) 时,a=b了, a可以使用B中所有A的方法
(4)时,a向B强转,那么B特有的方法,a完全无法提供,当然报错。追问int 和byte 之间为什么能转型 而且我类内部完全没有任何方法 还是说完全禁止这种向下转型元数据类型除外?
当 (1) 时,a=b了, a可以使用B中所有A的方法
(4)时,a向B强转,那么B特有的方法,a完全无法提供,当然报错。追问int 和byte 之间为什么能转型 而且我类内部完全没有任何方法 还是说完全禁止这种向下转型元数据类型除外?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯