当前位置: 代码迷 >> J2SE >> instanceof使用容易总结-来自<疯狂java讲义>一书
  详细解决方案

instanceof使用容易总结-来自<疯狂java讲义>一书

热度:433   发布时间:2016-04-23 19:41:15.0
instanceof使用简单总结--来自<疯狂java讲义>一书
本帖最后由 u014680117 于 2015-09-21 11:41:20 编辑
简单分享一下刚刚学习的instanceof使用,本学习来自《疯狂Java讲义一书》,希望多多交流,有错的地方希望别喷,才刚刚学习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));
}
}

------解决思路----------------------
  相关解决方案