instanceof 订阅
instanceof是Java、php的一个二元操作符(运算符),和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。相当于c#中的is操作符。java中的instanceof是通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 展开全文
instanceof是Java、php的一个二元操作符(运算符),和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。相当于c#中的is操作符。java中的instanceof是通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
信息
定    义
是Java、php的一个二元操作符
俗    称
Java的保留关键字
中文名
实例
同    类
==,>,<
instanceof用法
boolean result = object instanceof class
收起全文
精华内容
参与话题
问答
  • instanceof

    千次阅读 多人点赞 2018-04-10 11:31:18
    instanceof instanceof :用来判断内存中实际对象A是不是B类型,一般用来做类的类型判断。 eg:cat、dog继承自animal,tree继承自botany cat instanceof animal 返回 true dog instanceof cat 返回 false cat ...

    instanceof

     instanceof :用来判断内存中实际对象A是不是B类型,一般用来做类的类型判断。
     eg:cat、dog继承自animal,tree继承自botany
      cat instanceof animal 返回 true
      dog instanceof cat 返回 false
      cat instanceof botany 返回 false

    Eg1:类

    package www.demo;
    
    /**
     * Cat
     * @author Administrator
     *
     */
    class Cat extends Animal{
    	
    }
    
    /**
     * Dog
     * @author Administrator
     *
     */
    class Dog extends Animal{
    	
    }
    
    /**
     * Animal
     * @author Administrator
     *
     */
    class Animal {
    	
    }
    
    public class Instanceof_test {
    
    	public static void main(String[] args) {
    		/**
    		 * 语法: boolean result = obj instanceof Class
    		 * 解析:
    		 * 		1.obj为实际内存中的对象。Class为类或接口。[当obj为Class的对象,或者是其直接或间接子类,或者是其接口的实现类,都将返回true]
    		 * 		2.编译时编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错。
    		 * 结论:
    		 * 		1.obj必须是引用类型,不能是基本类型。
    		 * 		2.obj若为null,不论和什么类型instanceof都将返回false(null用instanceof跟任何类型比较时都是false)。
    		 */
    		Cat cat = new Cat();
    		Dog dog = new Dog();
    		System.out.println(cat instanceof Animal); //true 
    		System.out.println(dog instanceof Animal); //true 
    		
    		System.out.println(cat instanceof Cat); //true 
    		System.out.println(dog instanceof Dog); //true 
    		
    //		System.out.println(cat instanceof Dog); // 编译不通过 “Incompatible conditional operand types Cat and Dog”
    		
    	}
    }
    

    Eg2:接口

    package www.demo;
    
    
    /**
     * Animal
     * @author Administrator
     *
     */
    interface Animal {
    	
    }
    
    /**
     * Cat
     * @author Administrator
     *
     */
    class Cat implements Animal{
    	
    }
    
    /**
     * Dog
     * @author Administrator
     *
     */
    class Dog implements Animal{
    	
    }
    
    public class Instanceof_test {
    
    	public static void main(String[] args) {
    		/**
    		 * 语法: boolean result = obj instanceof Class
    		 * 解析:
    		 * 		1.obj为实际内存中的对象。Class为类或接口。[当obj为Class的对象,或者是其直接或间接子类,或者是其接口的实现类,都将返回true]
    		 * 		2.编译时编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错。
    		 * 结论:
    		 * 		1.obj必须是引用类型,不能是基本类型。
    		 * 		2.obj若为null,不论和什么类型instanceof都将返回false(null用instanceof跟任何类型比较时都是false)。
    		 */
    		Cat cat = new Cat();
    		Dog dog = new Dog();
    		System.out.println(cat instanceof Animal); //true 
    		System.out.println(dog instanceof Animal); //true 
    		
    		System.out.println(cat instanceof Cat); //true 
    		System.out.println(dog instanceof Dog); //true 
    		
    //		System.out.println(cat instanceof Dog); // 编译不通过 “Incompatible conditional operand types Cat and Dog”
    		
    	}
    }
    

     

    展开全文
  • instanceof有什么作用

    千次阅读 2018-10-23 15:24:34
    instanceof是Java语言中的一个二元运算符,它的作用是:判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。...

    instanceof是Java语言中的一个二元运算符,它的作用是:判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。

    public class Test {
        public static void main(String[] args) {
            String s = "Hello";
            int[] a = {1,2};
            if(s instanceof String){
                System.out.println("true");
            }
            if(s instanceof Object){
                System.out.println("true");
            }
            if(a instanceof int[]){
                System.out.println("true");
            }
        }
    }
    

    在这里插入图片描述

    展开全文
  • java中的instanceof关键字

    万次阅读 多人点赞 2018-07-18 20:32:22
    java中,instanceof运算符的前一个操作符是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返回true,否则返回false。 也就是说: ...

    java中,instanceof运算符的前一个操作符是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返回true,否则返回false。

    也就是说:

    使用instanceof关键字做判断时, instanceof 操作符的左右操作数必须有继承或实现关系

    下面我们用继承树来判断instanceof的返回值:

    interface Man{}
    class Person1 implements Man{}    
    class Student extends Person1 {}    
    class Postgraduate extends Student {}    
    class Animal {}    
    public class Ex_instanceOf 
    {    
    	public static void main(String[] args) {    
    	   System.out.println("Student 的对象是谁的实例?");
    	   instanceofTest(new Student()); 
    	   System.out.println("Animal 的对象是谁的实例?");
    	   instanceofTest(new Animal());
    	   System.out.println("Postgraduate 的对象是谁的实例?");
    	   instanceofTest(new Postgraduate());
    	   //一个类的实例是这个类本身的实例,也是他父类,父类的父类的实例,也是实现的接口的实例
    	}      
    	public static void instanceofTest(Object p) {
    		if (p instanceof Animal)
    			System.out.println(p.getClass() + "类的实例  是类Animal的实例");
    		if (p instanceof Postgraduate)
    			System.out.println(p.getClass() + "类的实例  是类Postgraduate的实例");
    		if (p instanceof Student)
    			System.out.println(p.getClass() + "类的实例  是类Student的实例");
    		if (p instanceof Person1)
    			System.out.println(p.getClass() + "类的实例  是类Person的实例");
    		if (p instanceof Man)
    			System.out.println(p.getClass() + "类的实例  是接口Man的实例");
    		if (p instanceof Object)
    			System.out.println(p.getClass() + "类的实例  是类Object的实例");
     
    	}
    }
    

    上面的程序,展示各类之间的关系的继承树是:

    上述程序中:

    由上面继承树可知,某个类(接口也可以看成一个特殊的类)的对象是不是其他类(或接口)的实例,只需按箭头方向,以

    此对象所在的类为起点到达此继承树分支(可能有多个分支)终点,沿途经过的类(包括本类,或接口)就都是该对象的实例。

    所以输出结果是:

    Student 的对象是谁的实例?
    class t20170722FromInternet.Student类的实例  是类Student的实例
    class t20170722FromInternet.Student类的实例  是类Person的实例
    class t20170722FromInternet.Student类的实例  是接口Man的实例
    class t20170722FromInternet.Student类的实例  是类Object的实例
    Animal 的对象是谁的实例?
    class t20170722FromInternet.Animal类的实例  是类Animal的实例
    class t20170722FromInternet.Animal类的实例  是类Object的实例
    Postgraduate 的对象是谁的实例?
    class t20170722FromInternet.Postgraduate类的实例  是类Postgraduate的实例
    class t20170722FromInternet.Postgraduate类的实例  是类Student的实例
    class t20170722FromInternet.Postgraduate类的实例  是类Person的实例
    class t20170722FromInternet.Postgraduate类的实例  是接口Man的实例
    class t20170722FromInternet.Postgraduate类的实例  是类Object的实例
    

    但是,要注意一点:

          在判断某个类(接口也可以看成一个特殊的类)的对象是不是其他类(或接口)的实例,一定要首先进行向上转型,然后才可用instanceof关键字进行判断,这是基本操作规范。

    如:

    interface A{
        void say();
    }
    class B implements A{ 
        public void say()
        {
            System.out.println("B实现的say()方法");
        }
    }
    class C implements A{
        public void say()
        {
            System.out.println("C实现的say()方法");
        }
    }
    
    public class TestDemo{
        public static void main(String[] args) {
    	    A a= new B();  //接口不能new
    	    System.out.println(a instanceof B);   //true;发生了A a= new B();
                System.out.println(a instanceof C);   //false;没有发生A a = new C();      
        }
    }
    

    以上各类的之间关系的继承树如下:

    在判断接口A的对象a 是不是类C的实例时,没有先进行向上转型,就进行instanceof关键字的使用了,是肯定会返回false的。

    总结:

    如果一个类的实例是这个类本身的实例,那么它也是它的父类、它的父类的父类的实例,也是由它实现的接口的实例
    且instanceof左边操作元显式声明的类型与右边操作元必须是同种类或右边是左边父类的继承关系 

    此外:

    boolean b5 = null instanceof String; //false;这是instanceof 特 有 的 规 则 : 若左操作数为null, 结果就直接返回false, 不再运算右操作数是什么类。
    boolean b4 = 'A' instanceof Character; //编译不通过;'A'在此处视为基本数据类型char,instanceof操作符只能用作对象的判断



       

    展开全文
  • java中instanceof用法

    万次阅读 多人点赞 2010-05-10 14:08:00
    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 用法:result = object instanceof class...

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
     用法:
    result = object instanceof class
    参数:
    Result:布尔类型。
    Object:必选项。任意对象表达式。
    Class:必选项。任意已定义的对象类。
    说明:
    如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

     

    例子如下:


    package com.instanceoftest;

     

     interface A{}
     class B implements A{
     
     }
     class C extends B {
     
     }
     
     class instanceoftest {
      public static void main(String[] args){
         A a=null;
         B b=null;
         boolean res;
        
         System.out.println("instanceoftest test case 1: ------------------");
           res = a instanceof A;
           System.out.println("a instanceof A: " + res);
          
           res = b instanceof B;
           System.out.println("b instanceof B: " + res);
          
         System.out.println("/ninstanceoftest test case 2: ------------------");  
         a=new B();
         b=new B();
        
         res = a instanceof A;
         System.out.println("a instanceof A: " + res);
        
         res = a instanceof B;
         System.out.println("a instanceof B: " + res);

         res = b instanceof A;
         System.out.println("b instanceof A: " + res);
        
         res = b instanceof B;
         System.out.println("b instanceof B: " + res);
       
         System.out.println("/ninstanceoftest test case 3: ------------------");
         B b2=(C)new C();
        
         res = b2 instanceof A;
         System.out.println("b2 instanceof A: " + res);
        
         res = b2 instanceof B;
         System.out.println("b2 instanceof B: " + res);
        
         res = b2 instanceof C;
         System.out.println("b2 instanceof C: " + res);
      }
    }


    /*
    result:


    instanceoftest test case 1: ------------------
    a instanceof A: false
    b instanceof B: false

    instanceoftest test case 2: ------------------
    a instanceof A: true
    a instanceof B: true
    b instanceof A: true
    b instanceof B: true

    instanceoftest test case 3: ------------------
    b2 instanceof A: true
    b2 instanceof B: true
    b2 instanceof C: true

     

    */

    展开全文
  • Java中instanceof的用法和实战

    千次阅读 2018-11-01 15:13:05
    Java 中的instanceof 是一个二元操作符(运算符)运算符,由于是字母组成,所以是Java的保留关键字,但是和&gt;=,&lt;=,==属同一类,它的作用是用来判断,instanceof 左边对象是否为instanceof 右边类的...
  • 1、Array.isArray()和instanceof对比 当检测Array实例时,Array.isArray()更优,因为可以检测出iframes 当对象的原型被修改后,instanceof1会判断错误 2、Array.isArray()和Object.prototype.toString.call()对比 ...
  • 如果面试中让你说出 判断数组的三种方法 那上面的三种方法 倒是一个不错的选择 var arr=[1,2,3,4,5,6,7]; console.log(Object.prototype.toString.call(arr)=="... console.log(arr instanceof Array); console...
  • 1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object type],其中 type 为对象的类型。但当除了 Object 类型的对象外,其他类型...
  • 1.Object.prototype.toString.call() ...instanceof 的内部机制是通过判断对象的原型链中是不是能找到类型的 prototype,能在实例上找到的类型 [1,3] instanceof Object //true [1,3] instanceof Array ...
  • 由于之前一直都用Array.isArray(val)和instanceof的方式判断数组类型,但是源码上判断数组是这样的: toString.call(val) === "[object Array]" 复制代码不清楚作者为什么选择用这个方式判断数组类型的前提下,我去...
  • java中instanceof的用法和实战

    万次阅读 2017-12-21 11:08:13
    java中instanceof的用法和实战。java 中的instanceof 是一个二元操作符(运算符)运算符,由于是字母组成,所以是Java的保留关键字,
  • Java instanceof用法详解

    万次阅读 多人点赞 2018-08-10 15:20:47
    instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。 instanceof instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所...
  • instanceof用法

    万次阅读 2010-12-24 19:51:00
    * instanceof运算符用法 * 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当 * 左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false * * 说明:(1)一个类的实例包括本身的实例,...
  • JS instanceof用法

    千次阅读 2018-08-07 10:55:47
    js中的instanceof运算符 ** 概述 instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 语法 obj instanceof Object;//true 实例obj在不在Object构造函数中 ...
  • Java中instanceof用法

    2018-09-21 11:34:55
    Java中instanceof用法 java 中的instanceof 是一个二元操作运算符,是Java的保留关键字,和&gt;=,&lt;=,==属同一类,用来作判断,instanceof 左边对象是否为instanceof 右边类的实例,返回boolean类型值...
  • instanceof 用法及作用

    千次阅读 2016-08-09 20:28:22
    ===〉instanceof用来判断内存中实际对象A是不是B类型 出现这种情况经常是需要强制转换的时候 class Dog extends Animal 譬如dog定义了自己的方法wangwang Animal anAnimal = new Dog(); 此时不能直接调用an...
  • 详解 instanceof 使用方法

    千次阅读 2015-02-01 23:04:02
    instanceof这个方法 很简单啦。就是判断左边的 是不是 右边 的 子类 。。 package Connection; class monkey { } class longarmMonkey extends monkey { } class Engineer extends longarmMonkey { } ...
  • php中instanceof用法

    2010-03-03 09:03:05
    [code="PHP"][/code]
  • js中typeof和instanceof用法区别

    千次阅读 2017-06-16 11:31:54
    js中typeof和instanceof用法区别 转自:http://blog.csdn.net/u014421556/article/details/52083215 typeof和instanceof的区别 typeof和instanceof都可以用来判断变量,它们的用法有很大区别: typeof会返回...
  • PHP instanceof使用

    2016-02-24 17:21:04
    class Math{ static function squared($input){ echo $input*$input; } } $math = new Math(); if($math instanceof Math){ echo 'yes';...}instanceof是检查一个实例是不是该类衍生出来的。

空空如也

1 2 3 4 5 ... 20
收藏数 348,577
精华内容 139,430
关键字:

instanceof