当我们编写一个类时,当我们使用new关键字才会产生对象,系统才会分配内存的空间给对象,其方法才能被外部调用。而sattic修饰的结构,是随着类的加载而进行加载的,也就是说静态结构和对象的创建是 没有关系的。并且类在整个生命周期中只加载一次,所以static修饰的结构也只会加载一次 。话句话说,static修饰的结构是属于类的,不是属于对象的。
static关键字可以修饰那些结构呢?
- 属性
- 方法
- 代码块
- 内部类
其中修饰属性和修饰方法是最常用的。
static修饰属性【静态变量】:
上面也提到了,静态变量只会加载一次,系统只会为它分配一次空间,所以这个类的所有对象共享这一个空间。也就是说A对象修改了静态变量的值,B对象静态变量的值 也会随之改变。
类、类变量、实例对象、对象,之间的调用规则:
| 类变量 | 实例变量 | |
| 类 | 可以调用 | 不可以调用 |
| 对象 | 可以调用 | 可以调用 |
看两两之间是否能被调用,只需要看它们的加载时间,后加载的能够调用先加载的,反过来就不行了。
static 关键字修饰方法:
通过静态变量的介绍,下面就只介绍特点了:
- 加载时间: 静态方法是随着类的加载而进行加载的,普通方法是随着对象的加载而进行加载的。
-
方法调用规则表
类方法 普通方法 类 可以调用 不可以调用 对象 可以调用 可以调用 - 方法内的调用: 静态方法中可以调用静态方法、静态变量【当然如果想要在静态方法中调用用非静态的方法,那么可以在静态方法内部通过对象来进行调用】;非静态方法中可以调用静态方法、静态变量、非静态的方法和属性。
- 静态方法中不能使用this关键字,不能使用super关键。
static 关键字修饰代码块:
|
静态代码块 |
1、内部可以有输出语句; 2、内部的语句执行是在类的加载而执行 (只在类加载的时候进行初始化 只进行一次)。 3、初始化类的信息,执行顺序优于非静态代码块。 4、只能调用静态的的属性静态的方法,不能调用非静态结构。 |
|
非静态代码快 |
1、内部可以有输出语句; 2、随着对象的加载而执行。 3、每创建一次对象就会进行调用一次。 4、如果含有多个代码块会进行按照声明的先后顺序来进行执行。 5、可以调用非静态和静态。 |
static关键字用于修饰类的属性、方法和代码块,使得它们不依赖于对象即可被访问。静态变量在类加载时被初始化,所有对象共享同一份内存空间。静态方法在类加载时即存在,不依赖于对象调用,且在静态方法中不能使用this关键字。类方法可以调用普通方法,但普通方法不能直接调用类方法。
1102

被折叠的 条评论
为什么被折叠?



