public static void main(String[] args);

mic47 2010-11-15 08:27:12
这里的String[] args起什么作用,少了他们,编译没错,执行有错。错误如下:


D:\java\cons>java Test
Exception in thread "main" java.lang.NoSuchMethodError: main


求教高人
...全文
360 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
assumesy 2010-12-31
  • 打赏
  • 举报
回复
初学就当是死记硬背咯,以后会懂
binwenstars 2010-11-16
  • 打赏
  • 举报
回复
记住就行了 入口函数的参数。。。
binwenstars 2010-11-16
  • 打赏
  • 举报
回复
记住就行了 入口函数的参数。。。
a343502208 2010-11-16
  • 打赏
  • 举报
回复
String[] args 这是一个字符串形式的隐式数组 类型是String 数组名是args []这是数组形式,当你输入任何代码 执行任何操作的时候都把这些代码默认成一个无长度的数组 你可以这样写一段代码看看就明白了!

public class TestArray{
public static void main(String[] args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
在你打java TestArray的时候在后面 随便输入几个数 或者其它字符 他都会以字符串形式输出!
mengyalizuopeng 2010-11-16
  • 打赏
  • 举报
回复
楼主你这样思考
JAVA程序在执行的时候它从什么地方开始呢
JAVA程序必然是从某个入口开始执行的

JAVA是这样找入口的
找到一个叫main的方法 同时这个方法必须有
public、static、void 关键字的修饰
同时这个方法必须有String[]形式的入口参数
当JAVA找到这个方法后,就开始执行了
找不到这样一个方法,就没法执行了
这是JAVA定死的
vivi000o 2010-11-16
  • 打赏
  • 举报
回复
参数不同了,main就不是main了~
olo721727175 2010-11-16
  • 打赏
  • 举报
回复
因为主函数是程序的入口,你写的东西会覆盖编译器的main(String[] args){},由于他是静态的,所以他是第一个进入内存的孩子!
olo721727175 2010-11-16
  • 打赏
  • 举报
回复
如果你那个不是主类,一点问题都没有,同样编译器也是在编译期这么认为的,因为你的main()只的一个类中的静态方法,但是当你运行的时候,就告诉编译器“我这个是主类!”但编译器就迷惑了“我没找到你的主函数啊!我要告诉我找不到主函数!”
whut_lcy 2010-11-16
  • 打赏
  • 举报
回复
实际上,java的main方法必须定义成
public static void main(String[]args)
这样的。

一个字都不能改动(除了 String[]args,的args随便换,其他的都不行)。

当然,main还是可以throw异常的。
whut_lcy 2010-11-16
  • 打赏
  • 举报
回复
2楼说清楚了。作为入参传递给main的

别忘了,main也是个函数/方法,无非特殊一点,是给OS(这里是JVM)调用罢了。它也能够定义入参的。

至于为什么定义成字符串数组,那是统一规范来的。如果给你自定义main的样子,jvm的设计就复杂了。
ScAREcrOw_ss 2010-11-16
  • 打赏
  • 举报
回复
编译没错是因为不写参数只是重载了。

其他的,记住就是了,现在多知道不好。
sunyiz 2010-11-16
  • 打赏
  • 举报
回复
楼主你这样思考
JAVA程序在执行的时候它从什么地方开始呢
JAVA程序必然是从某个入口开始执行的

JAVA是这样找入口的
找到一个叫main的方法 同时这个方法必须有
publicstaticvoid 关键字的修饰
同时这个方法必须有String[]形式的入口参数
当JAVA找到这个方法后,就开始执行了
找不到这样一个方法,就没法执行了
这是JAVA定死的
shengfengluanshi 2010-11-15
  • 打赏
  • 举报
回复
java Test表示你要Test做某一件事,但是缺少main方法就找不到入口.它不知道从哪里开始
mochenyang 2010-11-15
  • 打赏
  • 举报
回复
大家的回答足够了,我拿分走人
yudun1989 2010-11-15
  • 打赏
  • 举报
回复
main其实就是一个特殊的方法而已。方法括号当中是参数,main也不例外。
我们编写一个程序之后要从main做入口,在cmd里面java这个类的时候,就从main开始执行,string[] args就是我们给他的参数。
public class ddd
{public static void main(String[] args)
{
System.out.println(args[0]);
}
}

在cmd里面输入java ddd abc就知道了
qxq198407 2010-11-15
  • 打赏
  • 举报
回复
main方法是程序的入口地址
yaoyuanmeiFiona 2010-11-15
  • 打赏
  • 举报
回复
嗯,是的,String[] args是在运行时可以输入的参数,固定的写法……至于那个错误

当应用程序试图调用类(静态或实例)的指定方法,而该类已不再具有该方法的定义时,抛出该异常。

通常由编译器捕获该错误;仅当类定义发生不相容的更改时,在运行时才会发生该错误。
皮皮虾向前冲 2010-11-15
  • 打赏
  • 举报
回复
String[] args 这个只是个参数
main函数的输出参数。
Acesidonu 2010-11-15
  • 打赏
  • 举报
回复
规定必须有的。
祈维俊 2010-11-15
  • 打赏
  • 举报
回复
每个java 程序都是从main 方法 开始执行的, String [] args 是main 方法的参数 就好比你定义的构造函数的参数,在入口时不能丢的。
加载更多回复(4)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧