Java学习笔记(三)面向对象---Static关键词

内容

静态:Static

用法

Static是一个修饰符,用于修饰成员(成员变量,成员函数),当成员被静态修饰后,除了可以被对象调用外,还可以直接被类名调用。

举例

class Person {
    String name;  //成员变量,实例变量
    static String country = "CN"; //静态的成员变量,类变量
}
public class StaticDemo {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p.country);     //使用对象调用
        System.out.println(Person.country);//直接使用类名调用
    }
}

运行结果:

CN
CN

特点

  1. Static关键词所修饰的成员随着类的加载而加载(随着类的消失而消失),也就是说静态变量不需要依靠创建对象而存在在内存中,所以它的生命周期最长

  2. 优先于对象存在
    (静态是先存在的,对象是后存在的)

  3. 被所有对象所共享

  4. 可以直接被类名所调用

实例变量和类变量的区别

存放位置

类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于堆内存中。

生命周期

类变量生命周期最长,随着类的消失而消失。
实例变量的生命周期取决于对象的建立和消失。

静态使用注意事项

  1. 对于数据,需要区分特有数据和共有数据。
    特有数据随着对象存储,不使用静态修饰。由于静态变量的生命周期较长,如果定义过多静态变量会导致过多的内存被消耗。
  2. 静态方法只能访问静态成员。
    非静态方法既可以访问静态也可以访问非静态。
  3. 静态方法中不可以定义this,super关键字。因为静态优先于对象存在。

静态的利弊

利:

  1. 对对象共享的数据进行单独空间地存储,节省空间。
  2. 可以直接使用类名调用,调用方便。

弊:

  1. 生命周期过长。
  2. 访问的局限性较大。

猜你喜欢

转载自www.cnblogs.com/liyuxin2/p/12297521.html