java静态修饰符static的使用

时间:2022-06-20 17:13:43
class Person { private String name; private int age; /* * 假设每个Person对象的国籍都一样, * 那么每次调用都要赋值就会不合理。 * 使用static修饰,国籍优先确立, * 每个对象建立时,都默认赋予了该国籍。 */
    static String country = "China"; Person (String name,int age) { this.name = name; this.age = age; } public void setName (String name) { this.name = name; } public String getName () { return name; } public void setAge (int age) { this.age = age; } public int getAage () { return age; } public void show () { System.out.println(name + "," + age); } /* * 因此不需要对象调用该方法,而是使用static修饰, * 用类Person.sleep直接调用。 * 所以: * 函数没有访问过对象中的属性时,就用static修饰。 */
    public static void sleep() { System.out.println("呼呼"); } } class StaticDemo { public static void main(String[] args) { /* * 如果创建对象调用sleep方法,但sleep方法并没有访问对象的属性, * 那么该对象的建立就是无意义的。 */
        //Person p = new Person("aaa",21);
 Person.sleep(); System.out.println(Person.country); } }

静态关键字static是成员修饰符。

特点

被static修饰的成员可以直接被类名所调用;

静态成员优先于对象存在;

静态成员随着类的加载而加载,随着类的消失而消失。静态成员生命周期很长。

注意事项

静态方法只能访问静态成员,不能访问非静态成员;非静态方法可以访问静态方法和成员变量。

静态方法中不能有this和super关键字。(原因是静态方法的建立早于对象)

主函数是静态的。

静态变量和成员变量的区别

  名称上的区别

    成员变量也叫实例变量;静态变量也叫类变量。

  内存存储的区别

    成员变量存储到堆内存的对象中,静态变量存储到方法区的静态区中。

  生命周期不同

    成员变量随着对象的出现而出现,随着对象的消失而消失。

    静态变量随着类的出现而出现,随着类的消失而消失。