由低到高是隐式转换,不需要强转 如: class A{ } class B extends A{ } A b = new B();//这种是隐式转换 由高到低需要强转 B a = (B)new A();//这种是强制转换,当需要强制转换时,你需要明确的知道你产生的对象的类型,以便保证能够正确强制转换并且不会丢失数据
有高到低可以自动转换(double到int、String到Object) 由低到高必须强制转换(int到double、Object到String) 举个例子:父类: class 人 ; 子类: class 男人 extends class 人 ;这两个类 人 ren = new 人(); 男人 nanren = new 男人(); ren=nanren 这个就自动转换,因为 男人 一定是 人 nanren = ren 这个要强制转换 因为 人 不一定是 男人 还有可能是女人
由低到高必须强制转换(int到double、Object到String)
Java编程那些事儿19—数据类型转换
如:
class A{
}
class B extends A{
}
A b = new B();//这种是隐式转换
由高到低需要强转
B a = (B)new A();//这种是强制转换,当需要强制转换时,你需要明确的知道你产生的对象的类型,以便保证能够正确强制转换并且不会丢失数据
由低到高必须强制转换(int到double、Object到String)
举个例子:父类: class 人 ;
子类: class 男人 extends class 人 ;这两个类
人 ren = new 人();
男人 nanren = new 男人(); ren=nanren 这个就自动转换,因为 男人 一定是 人
nanren = ren 这个要强制转换 因为 人 不一定是 男人 还有可能是女人
从大到小,当有可能会发生精度丢失的时候,需要强制转换,比如说int a=(int)(3.14f);
对象类型也是一样,由高到低时 需要强转,低到高时会自动转,
比如说String吧,由于String是Object类的子类.所以可以把String直接赋值给Object 但是反过来则需要强转!