Java static关键字

Java static关键字

1.被static修饰的属性(静态属性):

public class Student{
    private static int age; //static修饰的属性(静态属性)
    private double score; //没被static修饰(非静态属性)

    public static void main(String[] args) {

        //静态属性是可以直接 类名 . 的形式拿到 属性
        System.out.println(Student.age);
        //Student.score 这样是不行的非静态属性是不可以用类名 . 的形式调用的
        
        
        Student s = new Student();
        //非静态的属性需要对象 . 的形式拿到属性
        System.out.println(s.score);
        
    }
}

需要注意的是 Java中的static关键字不会影响到变量的变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected这几个关键字。

private   在当前类中可访问

default        在当前包内和访问

protected    在当前类和它派生的类中可访问

public          公众的访问权限,谁都能访问

这里之所以是private也能用Student.age(类名 . 的方式拿到)是因为 在同一个类里。

比如下面这个就是错的:

 由于private只在当前类中可以访问 所以这里即使是static修饰的静态属性也是获取不到的。

2.被static修饰的方法(静态方法):

public class Student{
    //定义一个静态方法
    static void text(){
    }
    //定义一个普通方法
    void demo(){
    }
    public static void main(String[] args) {
        //静态方法是可以用类名 . 的形式调用的
        Student.text();

        //非静态方法是不能用类名 . 的形式调用的 必须先创建对象 然后才能调用
        Student student = new Student();
        student.demo();
    }
}

3.被static修饰的代码块儿(静态代码块儿):

静态代码块是用来初始化数据的:

public class Student{
    //这是匿名代码块
    {
        System.out.println("匿名代码快");
        //匿名代码块 new一个对象时就加载
    }
    //这是静态代码块 静态代码块只执行一次
    static {
        System.out.println("静态代码块");
        //静态代码块随类的加载而加载 所以最先执行
    }
    //重写构造器
    public Student(){
        System.out.println("我是构造器");
        //构造器 也是new一个对象时加载 但是他是在匿名代码块加载之后在加载
    }
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println("*****************");
        //再次创建对象时 静态代码块就不会执行了
        Student student1 = new Student();

    }
}

执行结果:

 

 

 

posted @ 2020-12-17 10:28  lovelife80  阅读(71)  评论(0编辑  收藏  举报