Q1:java中为什么main方法必须用static修饰?
A1:源自百度
1、首先介绍一下static这个修饰符
在类中,变量的前面有修饰符static称为静态变量(类变量),方法的前面有修饰符static称为静态方法(类方法)。静态方法和静态变量是属于某一个类,而不属于类的对象。
2、如果一个方法没有用static来修饰的话就说明这是一个成员方法,只能通过对象来调用这个方法。
3、在Java程序运行时,是没有实例化任何对象的,只能通过调用类方法来运行main方法,所以会用static来修饰。
Q2:在java中和main方法并列的方法为什么一定要加static?
A2:因为 main 方法是静态的,所以 main 方法里直接调用的方法也必须是静态的。
JAVA里有类的概念,有对象的概念,对象是类的实例,类是对象的模型。说白了就是,类是一个模板,对象就是照这个模板刻出来的具体事物,而静态方法和静态变量,是属于这个模板的,也就是类的,而非静态的方法和变量是从属于对象的,这两者互不干扰。
现在说为什么JAVA不允许静态方法调用非静态方法。假设,我们先创建了一个类,也就是模板,但是还没有用这个模板是生成对象,那么现在我们只有静态方法(因为非静态方法是对象的,目前没有对象)。那么你模板的静态方法,怎么去调非静态方法(压根就没有)?就算有了对象,有非静态方法了,那么你main方法是调用哪个对象的非静态方法呢?因此,你必须明确表明你调用的哪个对象的哪个方法,所以你需要先new一个对象object,然后object.method()。