你好。
static的意思是静态,他修饰的对象是根据内存的占用就开始被创建的。也就是说你普通的对象需要new了才能用,比如 Student s=new Student(); 之后才能使用 s.study();
但是如果你的类中有一个方法(或者属性)不想用这种方式来调用,而是想直接使用,就可以用 类名.方法名来使用即可。他new了吗? 必须new了,但是不需要我们手动在调用的时候new。 你可以在你的类中尝试一下 ,写一个静态代码块 , 如 static { System.out.print("没人调用我,但是我执行了!")}
当你在启动程序的时候,就会发现后台有输出这个文字。
上文中说的是类中的某个方法的static用法。
那么类也是这样的。
System类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。他的属性和方法都是static的,所以也可以很方便的进行调用。调用方式 就是 类型.属性名称/方法名称。
最后,如果他内部的某个属性方法为static类型的,那么需要提前加载到内存中,那么,你想想方法都要进取了,类能不跟着进去吗? 所以这就解释了,为什么System类必须要是Static了。
你可以自己创建一个类 里面用static来试试。
有点啰嗦,如果疑问请继续追问。
1.System源码是这样的
public final class System
final修改的类是不能实例化的。