JAVA我的类型(instanceof运算符)

本文介绍了JAVA中的instanceof运算符,用于判断对象是否属于某个类或其子类。当对象是类的实例,或者子类实例时,该运算符返回true,否则返回false。此外,所有对象与Object类进行instanceof操作都将返回true。
摘要由CSDN通过智能技术生成

instanceof用来判断某个对象是不是这个类的实例并返回一个布尔值。如果是,则返回true,否则返回false。在运算时,会做一个自动类型兼容的处理。类的对象与类作instanceof操作会返回true;子类对象与父类作instanceof操作返回true;所有对象与Object作instanceof操作返回的都是true。

 package JAVA_Project_01_05;

//· instanceof用来判断某个对象是不是这个类的实例并返回一个布尔值。如果是,则返回true,否则返回false。在运算时,会做一个自动类型兼容的处理。
//
//· 类的对象与类作instanceof操作会返回true;子类对象与父类作instanceof操作返回true;所有对象与Object作instanceof操作返回的都是true。


public class TextInstanceOf {//操作instanceof运算符的类

    static class ObjectA {//静态内部超类

        static String A = "Object";

    }

    static class ObjectB extends ObjectA {//静态内部子类

        static void showInfo() {

            System.out.printf("超类的静态属性%s的值:%s%n", "A", A);

        }

    }

    public static void main(String[] args) {//Java程序主入口处

        ObjectA a = new ObjectA();

        ObjectB b = new ObjectB();

        if (a.A instanceof Object){//静态属性A是否是Object类型

            System.out.println("静态属性A是Object类型");

        }else{

            System.out.println("静态属性A不是Object类型");

        }

        if (a.A instanceof String){//静态属性A是否是String类型

            System.out.println("静态属性A是String类型");

        }else{

            System.out.println("静态属性A不是String类型");

        }

        if (null instanceof Object) {//null是否是Object类型

            System.out.println("null是Object类型");

        } else {

            System.out.println("null不是Object类型");

        }

        if (a instanceof ObjectA) {//检测对象a是否为ObjectA类型

            System.out.println("对象a是ObjectA类型");

        } else {

            System.out.println("对象a不是ObjectA类型");

        }

        if (b instanceof ObjectA) {//检测对象b是否为ObjectA类型

            System.out.println("对象b是ObjectA类型");

        } else {

            System.out.println("对象b不是ObjectA类型");

        }

        if (a instanceof ObjectB) {//检测a是否为ObjectB类型

            System.out.println("对象a是ObjectB类型");

        } else {

            System.out.println("对象a不是ObjectB类型");

        }

        if (b instanceof ObjectB) {//检测b是否为ObjectB类型

            System.out.println("对象b是ObjectB类型");

        } else {

            System.out.println("对象b不是ObjectB类型");

        }

    }

}

/*
(1)程序中定义静态内部类。需要注意的是:仅仅只有内部类能够被声明为static类型,通常声明一个普通类是不能使用static的,否则编译出错。
编译器会自动给内部类加上一个reference,指向产生它的那个外部类的对象,如果不想要或者说不需要这个reference,
那么就可以把这个内部类声明为static,禁止这个reference产生。

(2)在main()主方法中进行了一系列的判断:字符串是否是对象类型、null是否是对象、子类是否是超类类型以及超类是否是子类类型。
子类是超类的扩展,所以子类属于超类类型。由于是单一继承,则超类不能继承子类,所以超类不属于子类类型。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值