Static 来修饰成员变量和成员方法
1、statci来修饰成员变量
在一个类中,静态成员变量,属于该类所有,而不是属于创建的对象所有,所有该类创建的对象共享该成员变量。
2、static修饰成员方法
同样,使用static修饰了成员方法,该方法属于类,不属于对象。
如果没有statci关键字,那么必须创建对象,然后通过对象才能使用它。
如果有了static关键字,那么不需要创建对象,直接通过类名称来使用它。
MyClass obj = new MyClass();
obj.methStatic(); 正确写法,不推荐这种写法,再通过javac编译后会编译成下面写法
MyClass.methodStatic(); 正确写法,推荐该种写法
所以,无论是成员变量还是成员方法,如果有了static,都推荐使用类名称进行调用。
关于静态成员函数的访问变量问题
1、静态成员函数不能直接访问非静态成员变量
原因:因为在内存当中,是先有的静态内容,后有的非静态内容。
2、静态方法中不能用this 指针
原因:this代表当前对象,谁调用的方法,this就指向谁,而静态方法属于类不属于对象。
static 的内存图
在方法去中单开辟一个内存空间来存储静态变量与方法
静态代码块
在程序执行时,只执行一次(为了实现执行一次,可以在这里实现)
public class MyClass {
static {
}
}