static关键字的作用
static可以定义静态成员变量、静态函数、静态代码块
1.静态成员变量的语法特点
与普通成员变量的区别:
可以直接用类名.变量名给变量赋值
普通成员变量:修改其中一个成员变量的值,不会影响到其它成员变量的值
如下:
静态成员变量:所有对象使用的静态变量的值都是同一个
修改其中一个对象的静态成员变量,都会造成其它的对象的静态成员变量发生改变
静态成员变量不是属于某一个对象的变量,而是属于这个类的变量
2.静态函数的语法特点
在函数前面加上static关键字
静态变量和静态函数的相同点:
都可以用类名.xxx来调用
静态函数的第二个特征:
在静态函数中不能直接使用非静态的成员变量
为什么在静态的成员函数中不能使用非静态的成员变量?
假如可以在静态成员函数中使用非静态的成员变量,怎么解释下图中的this
之前所说,this代表了调用了这个函数的对象,但是静态函数是直接用类名来调用的,这个时候是没有对象的,所以此时的this没法解释
若不带this,则name也没法解释,因为它不是任何对象的变量
3.静态代码块的语法特点
Static{
}
静态代码块在装载类的时候执行
静态代码块的作用是为静态变量赋初始值