黑马程序员技术交流社区

标题: java笔试题目。main函数可以多形式重载。 [打印本页]

作者: 樊玲    时间: 2013-3-10 18:35
标题: java笔试题目。main函数可以多形式重载。
   话说,个人觉得,main函数重载没啥用,不过,笔试中会有main函数的重载。哪种形式对,哪种形式错。所以自己试了几个。总结了下,发个贴。  果然基础很重要。宿舍有14期的学姐,据她说,面试过程中大多是基础的。 0.0 传说中的,考察功底么??
一、main 函数可以重载(两个main函数,同时存在于一个类中)
三种情况:
1、完全相同,access identifer 不同, 返回值不同
Java代码  
public class MainTest {

public static void main(String[] args) {
System.out.println("main1 starts.");
}

public static void main(String[] args) {
System.out.println("main2 starts");
}

}
编译错误:MainTest.java:7: main(java.lang.String[]) is already defined in MainTest
注意:错误发生在第二个main函数运行时
2、参数不同  
public class MainTest {

public static void main(String[] args) {
System.out.println("main1 starts.");
}

public static void main(Integer[] args) {
System.out.println("main2 starts");
}

}
编译通过。
运行结果:main1 starts.
3、参数不同且没有String[] 参数型main方法

public class MainTest {

public static void main(Boolean[] args) {
System.out.println("main1 starts.");
}

public static void main(Integer[] args) {
System.out.println("main2 starts");
}

}
编译通过。
运行错误:Exception in thread "main" java.lang.NoSuchMethodError: main

大家抽空就随意看看,
作者: 曾钦    时间: 2013-3-10 18:39
看完了,意思就是一个类里有且只有一个 public static void main(String[] args){ }
没错吧。
作者: a392085656    时间: 2013-3-10 18:57
重载当然是可以的,方法名是main,不过这只是普通的方法,不会是程序的入口了。
作者: HM马明宇    时间: 2013-3-10 19:04
a392085656 发表于 2013-3-10 18:57
重载当然是可以的,方法名是main,不过这只是普通的方法,不会是程序的入口了。 ...

正解,main不是java关键字,所以可以当做普通方法名来用!
作者: HM马明宇    时间: 2013-3-10 19:04
a392085656 发表于 2013-3-10 18:57
重载当然是可以的,方法名是main,不过这只是普通的方法,不会是程序的入口了。 ...

正解,main不是java关键字,所以可以当做普通方法名来用!
作者: 张卫刚    时间: 2013-3-10 19:22
这个基础里讲过吧

作者: wanggang    时间: 2013-3-10 19:41
public static void main(String[] args){}是主程序的入口,是被jvm调用,参数类型不可变,参数名可以随便写,
作者: 吴硕    时间: 2013-3-10 20:17
保证只有一个程序入口
重载没有问题
作者: 黄基焜    时间: 2013-3-10 20:20
main方法也是方法,当然可以重载。而且,任何一个方法名和同样的参数列表的方法只能存在一个,不单单是main方法才有的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2