是否可以从一个static方法内部发出对非static方法的调用?

一、概述

在我们开发过程中,经常会使用到static关键字。包括在工具类的使用static修饰静态方法,和final结合起来使用定义属性。

二、问题回答

问题:是否可以从一个static方法内部发出对非static方法的调用?

答:不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。

三、static总结

static使用的注意事项有哪些?

   1、 在静态方法中是没有this关键字的

    2、静态是随着类的加载而加载,this是随着对象的创建而存在。

   3、 静态比对象先存在。

    4、静态方法只能访问静态的成员变量和静态的成员方法【静态只能访问静态,非静态可以访问静态的也可以访问非静态的】

static关键字的特点?

    1、随着类的加载而加载

    2、优先于对象存在

    3、被类的所有对象共享

    4、可以通过类名调用【静态修饰的内容一般我们称其为:与类相关的,类成员】

使用static存在什么问题?

    1、占用内存,并且内存一般不会释放;

    2、在系统不够内存情况下会自动回收静态内存,这样就会引起访问全局静态错误。

    3、在Android中不能将activity作为static静态对象,这样使activity的所有组件对象都存入全局内存中,并且不会被回收;



你可能感兴趣的:(是否可以从一个static方法内部发出对非static方法的调用?)