**
## Static关键字解析
**
作用:
*Static是一个修饰符,用于修饰成员变量、成员方法。
*被static修饰了的成员变量,会从对象里把该成员变量拿出来,放在共享区(data segment),变为静态成员;
*当成员被static修饰后,多了一种访问方式,除了可以被对象调用之外,还可以直接被类名直接调用。如(类名.静态成员)
调用:
//被对象调用
Student s = new Student();
s.country = "中国";
//被类名调用
System.out.println(s.country);
System.out.println(Student.country);
运行结果为:
中国
中国
Static的特点:
1.随着类的加载而使Static方法也加载进内存。(这也是为什么被Static修饰后的成员变量能被类直接访问的原因)
2.是优先于对象的存在。
3.被Static修饰的成员变量,是被所有本类中的对象所共享的。
4.可以直接被类名所调用。
存放位置:
&静态变量是随着类的加载而存在于data内存区的。
&实例变量(非静态变量)则是随着对象的建立而存在于堆内存中。
String name;//实例变量,非静态的
int age; //实例变量,非静态的
static String country;//加上static则由成员变量变为静态成员或静态变量(也叫类变量)
生命周期:
1.类变量生命周期最长,随着类的消失而消失。
2.实例变量生命周期比类变量周期短,它是随着对象的消失而消失。
Static方法注意事项:
1.静态的方法只能访问静态的变量(也就是静态成员)。
2.非静态的方法既能访问静态的成员(包括成员变量、成员方法),也能访问非静态的成员。
3.静态的方法中是不可以定义this、super关键字的。因为静态优先于对象存在,所以不可以出现this、super关键字。
4.局部变量不能被static修饰
如果这篇文章对你有帮助,希望你能为我点赞👍,那会是对我极大的鼓舞。如果本文有出错的地方,希望各位兄弟姐妹们指点出来,让我们共同探讨,共同进步。