Day39-20260210

Static

package com.oop.demo07;
//Static :
public class Student {
    private static int age;//静态的变量   多线程!
    private double score;//非静态的变量
//静态方法
    public void run(){
        go();//类中非静态的可以访问静态的方法,静态的可以访问静态的但是不能调用非静态的
    }
    public static void go(){

    }
//静态属性
    public static void main(String[] args) {
        new Student().run();//方法
        Student.go();//类名调用
        go();//当前类中直接调用
//        Student s1 = new Student();//属性
//        System.out.println(Student.age);//静态的推荐使用类名访问方法
//        //System.out.println(Student.score);
//        System.out.println(s1.age);
//        System.out.println(s1.score);
    }
}
package com.oop.demo07;

public class Person {
    {
        //代码块(匿名代码块)
    }//创建对象时自动创建,在构造器之前
    static {
        //静态代码块
    }//类一加载,直接执行,永久只执行一次
    //2,赋初始值
    {
        System.out.println("匿名代码马块");
    }
    //1,只执行一次
    static {
        System.out.println("静态代码块");
    }
    //3
    public Person(){
        System.out.println("构造方法");
    }
    public static void main(String[] args) {
        Person person1 = new Person();
        System.out.println("========================");
        Person person2 = new Person();
    }
}

静态代码块
匿名代码马块
构造方法
========================
匿名代码马块
构造方法

进程已结束,退出代码为 0
package com.oop.demo07;
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
//final断子绝孙是常量修饰符
//通过final修饰的类不能被继承,没有子类了
public class Test {
    public static void main(String[] args) {
        System.out.println(Math.random());
        System.out.println(random());
        System.out.println(PI);
    }
}

0.9481691403729069
0.9455844673727518
3.141592653589793

进程已结束,退出代码为 0

本文展示了Java中static关键字的几种用法:1) 静态变量和方法,静态成员属于类而非实例,可通过类名直接访问;2) 静态代码块,在类加载时执行且只执行一次;3) 静态导入包,可直接使用导入类的静态成员。代码示例演示了静态与非静态方法的调用规则、静态/匿名代码块的执行顺序(静态代码块优先),以及使用final修饰符创建不可继承的常量类。静态特性在内存管理和多线程编程中具有重要作用。

posted @ 2026-02-10 22:08  贾光清  阅读(23)  评论(0)    收藏  举报