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);
运行结果如上