Java的提问

来源:百度知道 编辑:UC知道 时间:2024/07/01 05:00:21
public class Test {
int i;
int j;
public static void main(String[] args) {
Test t1=new Test();
Test t2=new Test();
t1.main("kdfj");
}
}
//我们为什么不能这样用对象区调用静态的main()?
//希望得到有理有据的回答。即从Java语法去解释

public class C {
public static void main(String[] args){
System.out.println("####");
C e = new C();
C d = new C();
String[] f = {"ddd","eee","fff"};
main(909);
main(f);
}
public static void main(int a){
System.out.println("Another one");
}
}

你可以执行以下这个程序看看,
t1.main("kdfj"); 可以用对象来调用main方法,但是main方法接收到的数据类型是String数组,所以你只是传一个字符串应该是不对的,然后static方法不用指定哪个对象,直接写方法名就可以了。但是想想还是有问题,因为你看main方法里面又调用main方法,一直调用JVM会发出异常。
你可以在写一个public static void main(int a)这个也算是main方法只是参数不一样,这个叫overload(重载)然后调用他的话一点问题没有。

不知道有没有明白,不能理解的话继续问我吧。

在我看来其实是可以调用的,这样调用和递归是一个道理,你看看你调用main方法时传递的参数是什么类型,如果你想调用main方法,那么它的参数要求是String数组类型,而你却传了一个String类型进去,语法上都行不通,当然会出错。
这是我写的一个测试程序:
class TestMain
{
static int count = 0; //用一个静态变量计数,限制调用main方法的次数。
public static void main(String[] args)
{
if(count >= 3) {