自动类型转换
把小范围的类型的变量转换成大范围的类型变量不需要特殊声明系统自动完成 如:byte 转成 int
注意:
byte b1 = 10;
byte b2 = 20;
//错误: 不兼容的类型: 从int转换到byte可能会有损失
//否则,两个操作数都将转换为int类型。
byte b3 = b1 + b2 //错误,b1+b2是int类型,java的整数默认类型为int,b3是byte类型,二者类型不同,所以出错
byte b3 = (byte)(b1 + b2); //正确
强制类型转换
把大箱子放进小箱子需要强转,需要转成什么类型变量前面就加上(要转的类型)
子类和父类之间的类型转换
向上转型:子类转成父类 同自动类型转换
向下转型:父类转成子类 同强制类型转换
并不是所有的对象都可以向下转型,只有当这个对象原本就是子类对象通过向上转型得到的时候才能够成功转型。
//Dog类继承pet eat1是Dog独有的
//这种可以正常输出 在执行时调用的是子类的方法
//在运行时调用的是父类方法
Pet pet=new Dog();
Dog dog=(Dog)pet;
dog.eat1();
//下面这种会报错
Dog dog1=(Dog)new Pet();
dog1.eat1();
结论:当发生向下转型的时候一定要先发生向上转型
- 注意:接口与实现类与 父类与子类 类似都体现了多态但接口不呢个实例化即不能new
基本数据类型和String之间的转换
String 转成 基本数据类型转成谁就用谁的包装类
如:String str="123"; int m=Integer.parseInt(str);
基本数据类型准成String 用Strng.valueOf(字符串变量);
如:int num3=100; String str1=String.valueOf(num3); System.out.println("str1="+str1);
也可以:String str2=num3+"";
基本数据类型和包装类转换 他们会自动转换(jdk1.5以后的自动转换)
包装类:8种基本数据类型对应的类,就是包装类
//装箱:把基本数据类型转成包装类
//拆箱:把包装类转成基本数据类型
int i=10;
Integer i1=i;//自动装箱
System.out.println(i1);
Integer a=20;
int a1=a;//自动拆箱
System.out.println(a1);