第三章③static关键字

static静态的:可以用来修饰属性、方法、代码块(或初始化块)、内部类【不能用于构造器】

static修饰属性(类变量):

通过对象也能调用类变量

1.由类创建的所有对象都共用一个属性(类变量:变量前用static修饰的变量)(变量也可以叫属性)

2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用(就是所有的都发生变化)

3.类变量随着类的加载而加载,而且独一份

4.静态的变量可以直接通过“类.类变量“进行调用

5.类变量的加载是要早于对象的,所以当有对象以后,可以“对象.类变量”使用。但是“类.实例变量”是不行的(类似父子关系,后出生的可以调用先出生的,先出生的不能调用后出生的)

6.类变量存在静态域中,供次类的所有对象使用

实例变量(实例=对象,也可以叫【对象变量】):不用static修饰的属性,每创建一个对象都会在堆内开辟一个空间,每个空间内都有不用static修饰的属性,是独立的,相当于副本,单个变量修改对其他变量不造成影响

实例变量是随着对象的创建而创建。没创建之前不分配内存空间

static修饰的方法(类方法):

1.随着类的加载而加载,在内存中也是独一份,一个对其改变会改变所有值

2.可以直接通过“类.类方法”的方式调用

3.方法内部可以调用静态的属性或方法(因为生命周期一样).不能调用非静态的属性或方法

4.非静态的方法是可以调用静态的属性或方法

注:静态的结构(static修饰的属性、方法、代码块、内部类)的生命周期要早于非静态的的结构,同时回收也要晚于非静态的结构

1.静态的方法内是不可以有this和super关键字的,应为this代表当前对象,super也是引用当前对象父类的值,静态的方法要早于对象

2.构造器和非静态的方法一样,可以调用静态的属性或方法

3.不依赖与具体对象的方法、属性都可以用static

4.使用静态变量可以实现“累加”的效果

你可能感兴趣的:(第三章③static关键字)