java类型转换总结

类型转换总结:
1.原型数据byte,short,int,long,float,double,char,boolean,小类型数据可以直接赋给大类型数据例如
 int a=1;byte b=2;short c=3;float d=3;double e=4;char f='a';boolean g=true;long l=10;
c=b;
a=f;
d=a;
e=d;
byte型数据不能直接赋给char型数据,因为byte表示的是8位有符号数,而char表示的是16位无符号数。同理short型数据(16位有符号数)与char型数据也不能直接通过赋值转换。
boolean不能与其他任何原型数据转换。

2.大类型数据可以强制转换成小类型数据。
如b=(byte)a;c=(short)a;a=(int)l;b=(byte)f;

3.原型数据的数组没有大小之分,不可相互转换,例如
byte[] ba;
short[]sa;
ba=sa或sa=ba;都是错的,强制转换也不行。

4.对象类型数据的转换
Object类型变量可以直接引用任何类型的对象,具有继承关系的类之间,父类型(大类类型)变量可以直接引用子类型(小类类型)对象,在父类类型的引用变量引用的是子类类型对象或者子子类类型对象时,该引用变量才可以强制转换成对应的子类类型引用。一句话要看该引用变量所引用的具体对象的类型能不能强制转换成目的类型。举例说明如下
正确的转换:
Object oa=new Integer(5);
Integer ia=(Integer)oa;
oa引用的是Integer类型对象,Integer类型引用ia当然可以指向它。

错误的转换:
Object oa=new Object();
Integer ia=(Integer)oa;
oa引用的是Object类型对象,Integer类型引用ia不能指向它的父类类型的对象。

正确的转换:
class A{

}
class B extends A{

}
class C extends B{

}


Object oa=new C();
 B b=(B)oa;
oa引用的是C类类型对象,而类C继承了类B,所以B类型引用b可以指向它的子类类型的对象。


5.对象数组的转换关系和类的转换关系一样。
如果B类继承了A类,则
B[]b=new B[2];
A[]a;
 a=b;
正确。
  A[]a=new B[2];
       B[]b;
       b=(B[])a;
也是正确的。

6.接口向类(Object类除外)转换一定要用强制转换,不同类型的接口之间可以用强制转换。举例说明如下,
interface A{
}
interface B{
}
class C implements A{
}
class D extends C implements B{
}

A a=new D();
 C c=(C)a;//使用了强制转换

 A b=new C();
 Object o=b;//对于Object没有使用

 B c=new D();
     A d=(A)c;//这里要用强制转换

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值