首先,static可以使用的地方:可以修饰变量,可以修饰方法,可以修饰类
(这里需要注意:普通类是不允许声明为静态的,只有内部类才可以,例如普通类A中有一个static修饰的静态内部类B,如果我要一个内部类B的实例化对象时,可以直接new A.B(), 而不需要将外部类 A 实例化)
其次要了解,类中所有使用static修饰的变量,方法或内部类都是此类的静态资源,是所有实例所共享的;其次我们可以发现在静态方法中是无法调用非静态方法的,比如:main函数就是用static修饰的,在main函数中无法直接调用此类中的非静态方法
问题:
为什么使用static?因为main是一个程序的入口,不可能实例化一个对象再去调用,所以设置成静态资源会更好,不需要实例化即可直接被调用;
为什么静态无法直接调用非静态?因为静态资源在类加载的时候就已经创建好了,而非静态资源在创建此类的实例对象时才会创建也就是new一个此类对象时;
那静态方法就一定无法调用非静态方法吗?不是的,既然非静态资源需要实例化时才会创建,那就创建一个此类的对象再调用不就可以了吗;