static关键字

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.age);//通过对象来调用
        
         System.out.println(Student.score);//这个会报错 not static field 非静态字段 不能这样使用
    }
}

静态变量推荐用类名来访问

静态变量对这个类来说,在内存中只有一个,能够被类中所有的实例去共享

静态方法

public class Student{
    
    private static int age;//静态变量
    private double score;//非静态变量
         
        public void run(){
            //非静态方法可以直接访问类中的静态方法
        go();
        }
        
        public static void go(){
            //静态方法里面可以去调用静态方法,但不能调用普通方法
        }
        
    public static void main(String[] args){
       
      //直接run()会报错 需要通过对象去调用
        new Student().run();
        
        go();//这样是可以的 等同于 Student.go() 因为它在当前类中 static会跟类一起加载出来
    }
}

静态代码块

public class Person{
    //匿名代码块程序在执行的时候不能去主动调用这些模块,是在创建对象的时候就自动创建了(早在构造器之前)
    
    //静态代码块是跟类加载的时候一起执行,永久只执行一次
    
    {
        //匿名代码块
        //用于赋初值
        //一般不推荐使用
    }
    static{
        //用static静态代码块 方便初始化一些东西 
    }
}
public class Student{
    
    //执行(输出)顺序是 1.静态 2.匿名 3.构造
    //再s2一次 静态代码块就会不输出了 静态代码块只执行一次
    //而其他的 对象一创建就先走匿名代码块再走构造方法
    
         {
             System.out.println("匿名代码块");
         }
    
     static{
              System.out.println("静态代码块");
           }
    
    public Student(){
         System.out.println("构造方法");
    }
    public static void main(String[] args){
       
        Student s1 = new Student();
        Student s2 = new Student();
        
    }
    

}

静态导入包

本来是这样式的

public class Test(){
    public static void main(String[] args){
          System.out.println(Math.randam());//生成随机数
    }
}

静态导入后

//静态导入包 甚至可以导Math里面的方法如random之类的
import static java.lang.Math.random;
import static java.lang.Math.PI;

public class Test(){
    public static void main(String[] args){
          System.out.println(randam());//生成随机数
        System.out.println(PI));
    }
}
posted @   凹尾狸花鱼  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示