java --- static

56 阅读1分钟

static

定义

static是一个修饰符,代表的是静态的意思,它可以修饰成员变量和成员方法,不能修饰构造方法

特点:

(1)被static所修饰的成员是随着字节码文件对象的加载而加载,所以是优先于对象存在于内存中的

(2)被static所修饰的成员被该类下所有的对象所共享

(3)被static所修饰的成员可以通过类名,直接调用  eg:Person.country

              类名.属性名();

              类名.方法名();

image.png

静态成员被放在方法区里,属于共用属性

注意事项:

(1) 静态方法中不能有this关键字,也不能使用super方法

(2) 静态方法中可以调用静态成员变量和静态成员方法,但是不可以调用非静态的成员变量和非静态的成员方法

个人理解:因为静态方法和静态成员不在对象里,和成员变量以及成员方法不在一个空间里。

(3) 非静态方法中可以调用静态的成员变量和静态的成员方法,也可以调用非静态的成员变量和非静态的成员方法

个人理解:静态方法加在在对象创建之前,对象在使用他们时可以找得到它们,不过用的是利用类名寻找

(4) static存在并发问题

(5) static在Java程序结束前会一直存在于内存中,故尽量少使用static

class Pig{

       String name;

       static int age;

       public static void eat(){

              drink();// 实际逻辑:Pig.drink();

              // this.sleep(); // 编译报错,非静态方法

              System.out.println(age); // 实际逻辑: Pig.age

              // System.out.println(this.name); // 编译报错,非静态属性

        }

        public static void drink(){}

        public static void sleep(){}

        public void allInfomat (){

              drink();// 实际逻辑:Pig.drink();

              this.sleep();

              System.out.println(age); // 实际逻辑: Pig.age

              System.out.println(this.name);

        }

}