A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊玲 中级黑马   /  2013-3-10 18:35  /  2331 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

   话说,个人觉得,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

大家抽空就随意看看,

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
看完了,意思就是一个类里有且只有一个 public static void main(String[] args){ }
没错吧。
回复 使用道具 举报
重载当然是可以的,方法名是main,不过这只是普通的方法,不会是程序的入口了。
回复 使用道具 举报
a392085656 发表于 2013-3-10 18:57
重载当然是可以的,方法名是main,不过这只是普通的方法,不会是程序的入口了。 ...

正解,main不是java关键字,所以可以当做普通方法名来用!
回复 使用道具 举报
a392085656 发表于 2013-3-10 18:57
重载当然是可以的,方法名是main,不过这只是普通的方法,不会是程序的入口了。 ...

正解,main不是java关键字,所以可以当做普通方法名来用!
回复 使用道具 举报
这个基础里讲过吧
回复 使用道具 举报
public static void main(String[] args){}是主程序的入口,是被jvm调用,参数类型不可变,参数名可以随便写,
回复 使用道具 举报
吴硕 中级黑马 2013-3-10 20:17:10
8#
保证只有一个程序入口
重载没有问题
回复 使用道具 举报
main方法也是方法,当然可以重载。而且,任何一个方法名和同样的参数列表的方法只能存在一个,不单单是main方法才有的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马