内容
静态: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
特点
Static关键词所修饰的成员随着类的加载而加载(随着类的消失而消失),也就是说静态变量不需要依靠创建对象而存在在内存中,所以它的生命周期最长
优先于对象存在
(静态是先存在的,对象是后存在的)被所有对象所共享
可以直接被类名所调用
实例变量和类变量的区别
存放位置
类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于堆内存中。
生命周期
类变量生命周期最长,随着类的消失而消失。
实例变量的生命周期取决于对象的建立和消失。
静态使用注意事项
- 对于数据,需要区分特有数据和共有数据。
特有数据随着对象存储,不使用静态修饰。由于静态变量的生命周期较长,如果定义过多静态变量会导致过多的内存被消耗。 - 静态方法只能访问静态成员。
非静态方法既可以访问静态也可以访问非静态。 - 静态方法中不可以定义this,super关键字。因为静态优先于对象存在。
静态的利弊
利:
- 对对象共享的数据进行单独空间地存储,节省空间。
- 可以直接使用类名调用,调用方便。
弊:
- 生命周期过长。
- 访问的局限性较大。
来源:https://www.cnblogs.com/liyuxin2/p/12297521.html