关于强制转换
之所以需要强制转换是为了防止程序员在不知情的情况下错把A类型的数据当成B类型数据。
程序员使用强制转换,是为了告诉编译器,“我知道我正在把A类型转成B类型,我肯定这样做在运行时不会不错,你就让我编译通过吧!”
强制转换实际上没有破坏被转换的原始数据。可以说强制转型是读操作,不是写操作
例如:
double pi=3.14
int a=(int)pi;
经过这样运算后,内存中的那个pi并没有被改动,只是取出了它的整数部分给了变量a。
子类型引用 要 引用父类型 对象,需要进行强制转换
比如说,Human是父类,Man是子类(因为男人是人)
现在我定义一个对象
Human 楼上的=new Human();//我定义了一个人
我再定义一个“男人” 类型的引用.
Man m;
我要让这个引用指向"楼上的"这个对象,就必须使用强制转型,因为这是一个有可能出错的过程(楼上的有可能是个女人),不强制转型的话,编译器为了降低程序错误,直接不让通过编译!
现在我确定楼上的是个男人,于是我可以
m=(Man)楼上的;
2.基本类型到引用类型不叫转换叫包装
在java中,每种基本类型都对应一种引用类型。
如int 类型对应Integer包装类
把一个int类型的数包装成Integer,只需要把这个int传入包装类型的构造函数
Integer packed=new Integer(5);
从一个包装类型取出其对应的基本类型值
int base=packed.intValue(); |