static关键字

给你一囗甜甜゛ 提交于 2020-02-17 00:55:41

static:静态的

  1. static可以修饰成员变量,称为静态变量,在方法区
    标准使用方式:类名.静态变量名
    另一种使用方式:对象名.静态变量名
  2. static可以修饰成员方法 ,称为静态方法
    标准使用方式:类名.方法名()
    另一种使用方式:对象名.方法名()
public class Student {
        String name; //name与age称为成员变量,在堆
        int age;
        static String school;//静态变量,而且在方法区
        
        public void show(){//成员方法
                
                
        }
        public static  void fun(){ //静态方法
                
        }
}
public class TestStudent {
        public static void main(String[] args) {
                Student.school="北京大学";  //静态变量的使用方法,是  类名.静态变量名
                //Student.name="张三"; //成员变量
                Student stu=new Student();
                stu.name="张三";
                stu.school="清华大学";//不报错,但是会警告
                
                
                Student.fun();//静态方法,  类名.方法名
        //Student.show();//成员方法,
                stu.show();
                
                stu.fun(); //不报错,但是会警告
        }
}
  1. static修饰代码块,称为静态代码块
    为类的静态变量进行赋初始值
    代码块:使用{}括起来的代码
    ①普通代码块:定义在方法里
    ②构造代码块:类中方法外,执行优先于构造方法,每创建一个对象执行一次。
    ③静态代码块:成员代码块前加static,为类的静态变量进行初始化,在类加载时执行一次,执行优先于构造代码块
    ④同步代码块
    构造方法,构造代码块,静态代码块执行顺序
    静态代码块–>构造代码块–>构造方法
public class Block {
        public Block(){
                System.out.println("--------构造方法");
        }
        //(2)构造代码块
        {
                 System.out.println("构造代块码");
        }
        //(3)静态代码块
        static{
                System.out.println("----------静态代码块------------");
        }
        
        public static void main(String[] args) {
                //(1)普通代码块,限定局部变量的作用域
                {
                        int a=10;
                }
                //System.out.println(a);//报错,超出了a的使用范围 
            new Block(); //匿名对象
                new Block();
        }
}

  1. 修饰内部类,称为静态内部类

static不允许使用成员变量
因为static是先加载到内存中的,在加载static的方法时,成员变量还没“出生”

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!