instanceof

instanceof

  • instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。

  • 类的实例包含本身的实例,以及所有直接或间接子类的实例

  • instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系,也就是说需要位于同一个继承树,否则会编译错误

public class App {
    public static void main(String[] args) {
​
        //Object>String
        //Object>Person>Teacher
        //Object>Person>Student
​
        Object object = new Student();
​
        //System.out.println(X instanceof Y);
        System.out.println(object instanceof Student);
        System.out.println(object instanceof Person);
        System.out.println(object instanceof Object);
        System.out.println(object instanceof Teacher);
        System.out.println(object instanceof String);
​
        System.out.println("--------------------------");
        Person person = new Student();
        System.out.println(person instanceof Student);
        System.out.println(person instanceof Person);
        System.out.println(person instanceof Object);
        System.out.println(person instanceof Teacher);
        //System.out.println(person instanceof String);编译报错!
​
        System.out.println("----------------------------");
        Student student = new Student();
        System.out.println(student instanceof Student);
        System.out.println(student instanceof Person);
        System.out.println(student instanceof Object);
        //System.out.println(student instanceof Teacher);编译报错
        //System.out.println(student instanceof String);编译报错
        }
    }    

强制转换

调用函数:

public class App {
    public static void main(String[] args) {
        Person mao=new Student();
        //studet将这个对象转换为Student类型,我们就可以使用Stdent类型的方法了!
        ((Student)mao).go();
​
        //子类转换父类,可能丢失自己本来的一些方法
        Student student = new Student();
        student.go();
        Person person=student;
​
        /*
        1.父类引用指向子类的对象
        2.把子类转换为父类,向上转型
        3.把父类转换为子类,向下转型:强制转换
        4.方便方法的调用,减少重复的代码
​
         */
         }
     }

子类:

public class Student extends Person{
    public void go(){
        System.out.println("go");
    }
​
}

父类:

public class Person {
    public void run(){
        System.out.println("跑");
​
    }
}

static关键字详解

package opp.oop7;
​
//static
public class Student {
    private static int age;//静态的变量,可以用类直接调用
    private double score;//非静态的变量
​
    public static void main(String[] args) {
        Student s1 = new Student();
​
        System.out.println(Student.age);
        System.out.println(s1.score);
        System.out.println(s1.age);
​
    }
}

package opp.oop7;
​
public class Person {
    {
        //匿名代码块
        System.out.println("匿名代码块");
    }
​
    static {
        //静态代码块:只执行一次!
        System.out.println("静态代码块");
    }
​
    public Person() {
        System.out.println("构造方法");
    }
​
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println("----------");
        Person person1 = new Person();
    }
​
​
}

package opp.oop7;
​
​
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Test {
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(PI);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值