instanceof 学习心得(1)-来自疯狂Java讲义一书


/***************************************
	instanceof 正常编译并运行的条件是:
	1. 前面的属于与后面的类形同
	2. 前面的属于的类是后面的父类

    instanceof 返回true的条件有:
	1. 前面的 ‘是’   后面的子类的实例
	2. 前面的 ‘与’   后面同类型的类的实例

	3. 前面的 ‘实现’ 类后面的接口的实例

****************************************/
public class TestInstanceof{

	public static void main(String[] args){
		//声明hello时候使用的是Object类,则hello 的编译类型是Object Object是所有类的父类
		//但是hello变量实际类型是String
		Object hello = "Hello!!!";
		//String是Object类的子类,所以可以进行instanceof运算,返回true  
		//下面是判断 hello 是否是后面Object的子类。答案是   true
		System.out.println("字符串是否是Object的类实例"+(hello instanceof Object));

		//hello是String类,所以返回true
		//下面是判断 hello 是否是后面的 String类。答案是   true
		System.out.println("字符串是否是String 的类实例"+(hello instanceof String));

		//String实现了Comparable 所以返回true
		//下面是判断 hello 是否实现后面Comparable的接口。答案是   true
		System.out.println("字符串是否是Comparable的实例接口"+(hello instanceof Comparable));

		/***************************************************
		Math 是Object类的子类,所以可以进行instanceof运算,返回false
		hello 既不是后面 Math 的子类,也不是与它同类,没有实现Math的接口,因此返回false
		因为hello 编译类型是Object,而Object是Math的父类,符合条件1,因此可以正常编译,并运行
		**************************************************************************/
		System.out.println("字符串是否是Math的实例"+(hello instanceof Math));

		String a = "Hello!!";
		/*****************************************************
		  因为String类型的 a 既不是后面 Math 的子类,也不是与它同类,没有实现Math的接口,因此返回false		  
		  因为String 与 Math 没有任何关系,因此下面的代码无法通关编译和运行。
		  
		*********************************************************/
		//System.out.println("字符串是否是Math的实例"+(a instanceof Math));
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值