static 关键字
前言
在我们定义成员变量或者成员方法的时候,有的它是有static关键字的,而有的呢,是没有的,下面我们来了解一下有关键字和没有关键字的区别.
1.static 关键字修饰成员变量
-
static 修饰成员变量 --> 静态变量
private int age; //普通成员变量 static String country; // 静态成员变量
-
静态成员变量可以被该类所有的对象共享,多个对象共享同一份数据;
-
静态成员变量属于类,直接可以通过 类名.成员变量名 使用;
Animal al = new Animal(); al.setAge(3); //正确 al.setCountry("China"); //正确 Animal.setCountry("China"); //正确 Animal.setName("Cat"); //错误
-
2.static 关键字修饰成员方法
-
static 修饰成员方法 --> 静态方法
public void getSum(){方法体} // 普通成员方法 public static void getSum(){方法体} //静态成员方法
-
与静态成员变量一样,静态方法属于类,可以通过类名称调用,被所有对象共享;
-
静态方法只能访问静态成员.(在内存中,先有静态内容,后有的成员内容)
-
3.static 的特点
- static 修饰的成员被所有的对象共享
- static 修饰的成员随着类的加载而存在,优先于对象存在
- static 修饰的成员可以直接通过类调用,多了一种调用方式
- static 修饰的数据是共享的
4.成员变量和静态变量的区别
-
变量的生命周期不同:
成员变量随着对象的创建而存在,随着对象的被回收而消失
静态变量随着类的加载而存在,随着类的消失而消失
-
调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用
-
数据存储位置不同
成员变量数据存储到堆内存的对象中,是对象的特有数据
静态变量数据存储在方法区的静态区,是对象的共享数据
5.静态使用注意事项:
-
静态方法只能访问静态成员.
-
静态方法中不可以使用this和super关键字.(this,super是指某个对象,静态方法属于类)
静态使用注意事项: -
静态方法只能访问静态成员.
-
静态方法中不可以使用this和super关键字.(this,super是指某个对象,静态方法属于类)
-
主函数是静态的.