JAVA static关键字

若有不正之处,希望谅解并欢迎批评纠正。

Static关键字。

static关键字一般修饰语与类下的方法与类里的成员变量。作用是不需要创建对象即可访问,通过类名.xx , 这样做可以节省内存空间和免去了NEW对象时所消耗的时间,为程序带来优化(个人理解)。静态方法不需要对象即可被外界访问,由此可得出它不附属于任何对象,判断出没有this,被static修饰的变量以及方法是不属于某个对象的,它存在的对象内存中的一个公共区,谁都可以访问,前提是权限修饰符不能为private等。

在同类中,静态方法如何访问非静态方法与非静态成员变量?

由于静态方法没有this,所以它不能直接访问非静态方法与非静态成员。总所周知,非静态方法/变量都必须依赖于具体的对象才能被访问。那该如何访问呢?

JAVA static关键字

由此可见,在静态方法调用非静态方法时会出现错误,但非静态调用静态是一切正常。

因为test方法调用非静态方法/变量时,test方法是静态不附属与任何对象,而非静态方法/变量被调用需要依赖于具体的对象,所以此处出现偏差。总结:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。

解决办法:创建对象。

JAVA static关键字

通过创建的对象来调用非静态方法/变量。 注意:静态方法里调用静态方法/变量是不需要创建对象的,直接调用。