测试main函数重载

我使用的jdk版本是:java version "1.6.0_23"

package com.test;

public class TestMain {

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

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

运行结果:
(命令行):[b][color=orange]编译时错误[/color][/b]
[quote]
TestMain.java:9: 已在 com.test.TestMain 中定义 main(java.lang.String[])
public static void main(String[] args) {
^
1 错误
[/quote]
eclipse中运行结果:
[quote]
[color=red]
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Duplicate method main(String[]) in type TestMain

at com.test.TestMain.main([u]TestMain.java:5[/u])
[/color][/quote]


我用jdk.1.5.0去测试:
(命令行):[b][color=orange]编译时错误[/color][/b]

运行结果:
[quote][color=red]TestMain.java:9: main(java.lang.String[]) is already defined in com.test.TestMain
public static void main( String[] args) {[/color] ^[/quote]


package com.test;

public class TestMain {

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

public static void main(String test, String[] args) {

System.out.println("main start 2" + test);
}

}

测试结果两个版本一样:
输出:main start 1

package com.test;

public class TestMain {

public static void main(String[] args) {
System.out.println("main start 1");
main(" Echo test.", args);
}

public static void main(String test, String[] args) {

System.out.println("main start 2" + test);
}

}

测试结果两个版本一样:
输出:main start 1
main start 2 Echo test.

更换重载方法里的参数类型(一个为String[],一个为boolean):

package com.test;

public class TestMain {

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

public static void main(boolean flag) {

System.out.println("main start 2");
}

}

测试结果两个版本一样:
输出:main start 1
更换重载方法里的参数类型(一个为Integer[],一个为boolean):

package com.test;

public class TestMain {

public static void main(Interger[] args) {
System.out.println("main start 1");
}

public static void main(boolean flag) {

System.out.println("main start 2");
}

}

输出(命令行):[b][color=orange]编译时错误[/color][/b]
1.5.0:
[quote]
TestMain.java:5: cannot find symbol
symbol : class Interger
location: class com.test.TestMain
public static void main(Interger[] args) {
^
1 error
[/quote]

(命令行):[b][color=orange]编译时错误[/color][/b]
1.6.0_23:
[quote]
TestMain.java:5: 找不到符号
符号: 类 Interger
位置: 类 com.test.TestMain
public static void main(Interger[] args) {
^
1 错误
[/quote]
eclipse输出:
[quote]
java.lang.NoSuchMethodError: main
Exception in thread "main"
[/quote]

其实很多java基础题会有编译时错误和运行错误看具体代码行,也得考虑运行环境是在命令行下,还是在集成开发环境像(Eclipse)中一样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值