instanceof (isinstance)代表的是类型的概念,既然是类型就有继承的概念,苹果是水果,但水果不是苹果,但水果也是水果。
所以苹果instanceof水果是true;水果instanceof苹果就是false了。
class不是类型的概念而是类的概念,苹果的class不是水果的class,这个比较用==(equals)
class Base{}; class Extend extends Base{}; public class ConfusedConcept { /** *the difference between instanceof and class */ public static void main(String[] args) { System.out.println( new Base() instanceof Extend);//false System.out.println( new Extend() instanceof Base);//true System.out.println( new Base() == new Extend());//比较的是class,false } }
可见“==”比较较真,是就是,不是就是不是,不含糊;instanceof说起来含含糊糊,但是人家也是有规律的:先来后到可是不能乱的,人是生物不假,生物可不都是人哦。可见较真就能准确定位,含糊却可以体现先后,古人云:物有本末,事有终始,知所先后,则近道矣。细细品来,真实不虚。
instanceof (isinstance) 和class的区别
原文:http://www.cnblogs.com/pdcayxs/p/6476711.html