引用变量的强制类型转换:
public class ConversionTest{
public static void main(String[] args){
//-基本类型之间的转换只能在数值之间进行
double d=13.4;
long l=(long)d;
System.out.println(l);
//-数值类型和布尔类型之间不能进行转换
int a=5;
//-编译报错:不可转换的类型
//boolean b=(boolean)a;
//-String 类型为Object的子类型,所以可以转换
Object obj="张三";
String objstr=(String)obj;
System.out.println(objstr);
//-Object类型为Integer的父类型,所以可以这样定义
Object objint=new Integer(5);
//-objint实际为Integer类型,与String类型不是父子继承类型的关系,所以转换运行会报错
//String str=(String)objint;
//-如果写代码时不确定两个类型是否可以转换,
//-防止代码报错,可以在转换前用 instanceof 运算符判断是否可以转换,
//-根据返回结果再决定是否继续转换,用法如下:
if(objint instanceof String){
String str=(String)objint;
}
System.out.println(objint instanceof String);
}
}
运行结果:

总结:
1、基本类型之间的转换只能在数值之间进行,数值类型和布尔类型之间不能进行转换
2、引用类型之间的转换只能在具有继承关系之间的类型间进行,若两个没有任何继承关系的类型之间无法进行转换,否则编译报错。
3、如果写代码时不确定两个类型是否可以转换,防止代码报错,可以在转换前用 instanceof 运算符判断是否可以转换,根据返回结果再决定是否继续转换,用法如下:
if(objint instanceof String){
String str=(String)objint;
}
System.out.println(objint instanceof String);
运行结果如上
热心技术,并兼吃喝,偶谈风月,不言国事.
浙公网安备 33010602011771号