当前位置: 技术问答>java相关
thinking in java 中提到的“造型(cast)”是什么意思?
来源: 互联网 发布时间:2015-02-01
本文导语: | 当一个对象不能直接类型转换。就需要造型。 例如: 一个int型能直接转换为double ,就不需要造型。 一个double型不能直接转换为int,就需要造型。 int a =1 ; double d1 = a; //不需要造型 int a2 = (int)d1 //需要造...
|
当一个对象不能直接类型转换。就需要造型。
例如:
一个int型能直接转换为double ,就不需要造型。
一个double型不能直接转换为int,就需要造型。
int a =1 ;
double d1 = a; //不需要造型
int a2 = (int)d1 //需要造型。
注意:
1)boolean不能造型为其他任何类型,其他任何类型也不能造型为boolean型。
2)子类能够直接转换为父类,不需要造型。父类不能够直接转换为子类,需要造型。
3)在强制造型时,不一定造型成功,此时编译对,但执行时出错。
例如:
一个int型能直接转换为double ,就不需要造型。
一个double型不能直接转换为int,就需要造型。
int a =1 ;
double d1 = a; //不需要造型
int a2 = (int)d1 //需要造型。
注意:
1)boolean不能造型为其他任何类型,其他任何类型也不能造型为boolean型。
2)子类能够直接转换为父类,不需要造型。父类不能够直接转换为子类,需要造型。
3)在强制造型时,不一定造型成功,此时编译对,但执行时出错。
|
所谓“造型”,并不是将一个类型的对象“变成”为某个类型,而是“看作”某个类型。比如有父类human,子类man与woman,如果new一个man的话,不需要显式造型,就可以被“看作”是一个human。(比如:human aHuman = new man();)当你拿到一个human对象时,实际上有可能是一个man,也可能是个woman,甚至干脆就是个human。如果你把刚才new的man还“看作”是个man的话(也就是说:man m1 = (man)aHuman;,这就是所谓“下溯造型”),是不会有错的;但如果你要是把他“看作”woman(就像这样:woman w1 = (woman)aHuman;),就会出现异常。
所以“上溯造型”一定是安全的,而“下溯造型”是不安全的。
所以“上溯造型”一定是安全的,而“下溯造型”是不安全的。