首页 热点资讯 义务教育 高等教育 出国留学 考研考公

基本数据类型转换在内存中是怎样实现的? 多态里:父类强转成子类在内存中又是怎样实现的?

发布网友 发布时间:2022-04-23 13:32

我来回答

1个回答

热心网友 时间:2023-10-15 20:28

各种基本数据类型在内存中所占用的空间大小是不同的,Java中,int占2字节,float占4个字节,double占8个字节等。基本数据类型好比一间教室,不同的教室可以容纳的学生数量是不同的(有的可以容纳2,有的可以容纳4,有的可以容纳8个),所谓的类型转化就是在不同教室之间交换学生,比如double教室可以容纳8个学生,当然允许int教室的2个学生,或float教室的4个学生搬过来,即用double可以表示int或float类型的数据,反过来比如把double转化成int,就叫强制转化,这是危险的,因为意味着很可能要丢弃一部分学生,在内存中意味着数据大小的可能改变。类的存储在内存中是按栈堆的形式存储的,比如A
a=new
A();变量a存储在栈中,栈本质上是对堆的引用,就是说对栈中的变量a存储的是堆中A的地址。如果A是教室的话,a就是教室的地址。子类继承了父类中的方法和属性,根据上面的结论,当然父类可以表示子类,这叫自动转化,如:Father
f=new
Child();反之,就叫强制转化,是不被建议的,是危险的操作,(Child)
f=new
Father();

热心网友 时间:2023-10-15 20:28

各种基本数据类型在内存中所占用的空间大小是不同的,Java中,int占2字节,float占4个字节,double占8个字节等。基本数据类型好比一间教室,不同的教室可以容纳的学生数量是不同的(有的可以容纳2,有的可以容纳4,有的可以容纳8个),所谓的类型转化就是在不同教室之间交换学生,比如double教室可以容纳8个学生,当然允许int教室的2个学生,或float教室的4个学生搬过来,即用double可以表示int或float类型的数据,反过来比如把double转化成int,就叫强制转化,这是危险的,因为意味着很可能要丢弃一部分学生,在内存中意味着数据大小的可能改变。类的存储在内存中是按栈堆的形式存储的,比如A
a=new
A();变量a存储在栈中,栈本质上是对堆的引用,就是说对栈中的变量a存储的是堆中A的地址。如果A是教室的话,a就是教室的地址。子类继承了父类中的方法和属性,根据上面的结论,当然父类可以表示子类,这叫自动转化,如:Father
f=new
Child();反之,就叫强制转化,是不被建议的,是危险的操作,(Child)
f=new
Father();

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com