Java 核心基础之static静态代码块和静态方法

时间:2020-07-25 23:49:36   收藏:0   阅读:74

static静态代码块和静态方法

static关键字

    public static class Student{
        static int age;
        public static String name;
        public static void speak() {
            System.out.println("唱歌??");
        }
    }
public class Student {
    static int age;
    public static String name;
    public static void speak() {
        System.out.println("唱歌??");
    }
}

static变量也称作静态变量

static方法也称作静态方法

注意事项

  1. 静态方法不能直接访问非静态变量
  2. 静态方法当中不能使用this
  3. 核心:一个类里面static修饰的不能访问非static修饰的成员或方法,而非static修饰的可以访问static修饰的成员或方法

静态代码块

class Person {
    static {
        System.out.println("我是静态代码块");
    }
}

常考面试题

  记得博主,在一次面试过程中,面试官出了这道题被吊打了。。。静态代码块、构造代码块、构造函数执行顺序

  默认执行顺序为:静态代码块 > 构造代码块 > 构造函数

public class Student {
    static {
        System.out.println("我是静态代码块");
    }
    {
        System.out.println("我是构造代码块");
    }
    public Student() {
        System.out.println("我是构造函数");
    }
}

执行顺序

技术图片

继承关系时的执行顺序

老师类

class Teacher {
    static {
        System.out.println("我是【老师】静态代码块");
    }
    {
        System.out.println("我是【老师】构造代码块");
    }
    public Teacher() {
        System.out.println("我是【老师】构造函数");
    }
}

学生类继承老师

public class Student extends Teacher{
    static {
        System.out.println("我是【学生】静态代码块");
    }
    {
        System.out.println("我是【学生】构造代码块");
    }
    public Student() {
        System.out.println("我是【学生】构造函数");
    }
}

执行顺序

public class MyMain {
    public static void main(String[] args) {
        Student student=new Student();
    }
}

打印结果:我是【老师】静态代码块我是【学生】静态代码块我是【老师】构造代码块我是【老师】构造函数我是【学生】构造代码块我是【学生】构造函数

技术图片

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!