引用变量的强制类型转换:

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);

运行结果如上

原文地址:https://www.cnblogs.com/baby-zhude/p/8035278.html