☆static关键字
修饰成员变量和成员方法
static关键字特点
1.随着类的加载而加载 2.优先于对象存在 3.被类的所有对象共享,可以通过类名调用。
static关键字注意事项
在静态方法中是没有this关键字。 静态方法只能访问静态的成员变量和静态的成员方法,原因是受生命周期的限制。
什么时候用静态?
A:当成员被所有对象共享,可以复用,比如常量。 B:工具类。
静态的内容存在于方法区。
package study.staic;
/*
定义一个人类
姓名和年龄都是变化的,这个我能接收,因为每个人的姓名和年龄是不同的。
但是,我们现在选取的几个人都是中国人,他们的国籍是一样的。
一样的国籍,我每次创建对象,在堆内存都要开辟这样的空间,
我就觉得有点浪费了。怎么办呢?
针对多个对象有共同的这样的成员变量值的时候,
java就提供了一个关键字来修饰:static。
*/
public class Person {
//姓名
String name;
//年龄
int age;
//国籍
String country;
public Person(){}
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public Person(String name,int age,String country) {
this.name = name;
this.age = age;
this.country = country;
}
public void show() {
System.out.println("姓名:"+name+",年龄:"+age+",国籍:"+country);
}
}
class PersonDemo {
public static void main(String[] args) {
//创建中国人
Person p1 = new Person("邓丽君",16,National.CHINA);
//创建中国人
Person p2 = new Person("杨幂",22,National.CHINA);
//创建美国人
Person p3 = new Person("凤姐",20,National.AMERICA);
p1.show();
p2.show();
p3.show();
}
}
☆静态变量和成员变量的区别
所属对象不同
静态变量属于类,所以也称为为类变量。 成员变量属于对象,所以也称为实例变量(对象变量)。
内存中位置不同
静态变量存储于方法区的静态区。 成员变量存储于堆内存。
内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失。
成员变量随着对象的创建而存在,随着对象的消失而消失。
调用不同
静态变量可以不用创建对象通过类名调用,也可以通过对象调用。
成员变量只能通过对象名调用。