Java中static你真的了解吗?

Java中static你真的了解吗?

今天来介绍一下static,在前面的博客中我介绍变量的时候我带着说了一些static,这里就不介绍在变量中的使用了。

  1. static来修饰方法

    public class Demo {
        
        public static void plaly(){
            System.out.println("play....");
        }
    
        public static void main(String[] args) {
            plaly();
        }
        
    }
    

    这样是直接可以在主方法中调用,这是由于被static修饰过的方法会随着类加载而被加载,就不需要通过对象来引用了,是不是非常方便。

  2. 下面介绍static对继承的影响

    //父类
    public class Pserson {
    
        public void eat(){
            System.out.println("eat");
        }
    
        public static void listen(){
            System.out.println("listen");
        }
    
    }
    
    //子类
    public class Student extends Pserson {
    
        @Override
        public void eat() {
            System.out.println("son eat");
        }
    }
    
    

    可以看出这里子类重写的方法中没有listen()方法,这是因为被static修饰的方法,它不能被重写,它是一个静态的方法。

  3. static在代码块中的使用

    package com.wang.statictest;
    
    public class Demo {
    
        //代码块
        {
            System.out.println("代码块");
        }
    
        //静态代码块
        static{
            System.out.println("静态代码块");
        }
    
        //构造方法
        public Demo() {
            System.out.println("构造方法");
        }
    
        public static void main(String[] args) {
            Demo demo = new Demo();
            System.out.println("=============");
            Demo demo1 = new Demo();
        }
    }
    
    
    运行结果:
        静态代码块
        代码块
        构造方法
        =============
        代码块
        构造方法
    
    

    可以看出这个加载的先后顺序啊,静态代码块最先执行,然后是代码块,最后是构造方法。所以我们可以用静态代码块来初始化一些变量什么的,具体应用后面博客在介绍。我们可以看出在main方法中我们两次调用了运行结果中少了静态代码块,这是一个注意点,静态代码块随着类加载,所以只会被加载一次。

  4. static可以修饰包名(这个是一个装逼的操作,实际应用很少)

    public class Demo {
        public static void main(String[] args) {
            System.out.println(Math.random());
        }
    }
    
    上面的我们使用Math中的方法必须通过Math.来调用,懒惰的我真想直接random啊,这个可以实现的
        
        
    import static java.lang.Math.random;
    public class Demo {
        public static void main(String[] args) {
            System.out.println(random());
        }
    }
    

    **import static java.lang.Math.random;加上这个相当于变成静态方法了,就可以直接调用了。**

猜你喜欢

转载自blog.csdn.net/qq_39594037/article/details/107100897
今日推荐