基本类型:只能在数值类型之间进行,数值类型包括整数型,字符型和浮点型。但数值类型和布尔类型之间不能进行类型转换。
double d = 13.4;
long l = (long)d;
System.out.println(l);//输出:13
int in = 5;
//boolean b = (boolean) in;
//试图把一个数值类型的变量转换为boolean类型,编译错误
引用类型:只能在具有继承关系的两个类型之间进行,如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例,即编译时是父类类型,运行时是子类类型
public class ConversionTest {
public static void main(String args[]){
Object obj = "Hello";//实际上obj是String类型的
String str = (String)obj;
System.out.println(str);
}
}
instanceof运算符: 它用于判断前面对象是否是后面的类,或者其子类,实现类的实例,是则返回true,否则返回false。
作用:在进行强制类型转换之前,先用instanceof运算符判断是否可以成功转换,从而避免ClasssCastException异常
public class ConversionTest {
public static void main(String args[]){
Object obj = "Hello";//实际上obj是String类型的
//所以满足条件,输出:Hello
if(obj instanceof String){
String str = (String)obj;
System.out.println(str);
}
else{
System.out.println("No!!");
}
}
}
总结:要想向下转型必须先向上转型