static声明的成员变量为静态成员变量,其的生命周期和类相同,在整个应用程序执行期间都有效。
静态方法不能调用非静态成员。
static可以用来修饰类的成员方法、类的成员变量。被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
static方法也成为静态方法,由于静态方法不依赖于任何对象就可以直接访问,因此对于静态方法来说,是没有this的,在静态方法中不能访问类的非静态成员变量和非静态方法,因为非静态成员变量和非静态方法都必须依赖于具体的对象才能被调用。
如果想在不创建对象的情况下调用某个方法,就可以将这个方法设置为static。
最常见的静态方法就是main方法,因为程序在执行main方法的时候没有创建任何对象,只有通过类名来访问。
static方法是属于类的,非实例对象,在JVM加载类时,就已经存在内存中,不会被虚拟机GC回收掉,这样内存负荷会很大,但是非static方法会在运行完毕后被虚拟机GC掉,减轻内存压力
static变量也称为静态变量,static成员变量初始化顺序按照定义的顺序来进行初始化。
静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化。
非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
静态方法不需要通过它所属的类的任何实例就可以被调用,因此在静态方法中不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。另外,和 this 关键字一样,super 关键字也与类的特定实例相关,所以在静态方法中也不能使用 super 关键字。
非静态的方法用”对象.方法”的方式,因为他在对象创建前不存在,必须依赖对象的创建后,才能使用
运行时,Java 虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。
在类的内部,可以在任何方法内直接访问静态变量。
在其他类中,可以通过类名访问该类中的静态变量。
静态变量可以被类的所有实例共享,因此静态变量可以作为实例之间的共享数据,增加实例之间的交互性。
如果类的所有实例都包含一个相同的常量属性,则可以把这个属性定义为静态常量类型,从而节省内存空间。例如,在类中定义一个静态常量 PI。
标签:静态方法,变量,实例,静态,访问,第二周,static,java From: https://www.cnblogs.com/yetang307/p/16705669.html