public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法。其中,public是权限修饰符,表明任何类或对象都可以访问这个方法,static表明main方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名.main()直接访问,JVM在启动的时候就是按照上述方法的签名(必须有public与static修饰,返回值为void,且方法的参数为字符串数组)来查找方法的入口地址,如果能找到就执行,找不到则会报错。void表明方法没有返回值,main是JVM识别的特殊方法名,是程序的入口方法。字符串数组参数args为开发人员在命令行状态下与程序交互提供了一种手段。

因为main为程序的入口方法,因此当程序运行的时候,第一个执行的方法就是main方法。通常来讲,要执行一个类的方法,首先必须实例化一个类的对象,然后通过对象来调用这个方法。但是由于main是程序的入口方法,此时还没有实例化对象,因此在编写main方法的时候就要求不需要实例化对象就可以调用这个方法,鉴于此,main方法需要被定义成public与static。下例给出了在调用main方法时传递参数的方法。

public class Test{

public static void main(String[] args){

for(int i=0;i<args.length;i++){

System.out.println(args[i]);

}

}

}

在控制台下,使用javac Test.java指令编译上述程序,使用javaTest arg1 arg2 arg3指令运行程序,程序输出结果如下所示。

arg1

arg2

arg3

引申:

(1)main方法是否还有其它可用的定义格式?

1)由于public与static没有先后顺序关系,由此下面的定义也是合理的:

static public void main(String[] args)

2)也可以把main方法定义为final:

public static final void main(String[]args)

3)也可以用synchronized来修饰main方法:

static public synchronized voidmain(String[] args)

不管哪种定义方式,都必须保证main方法的返回值为void,有static与public关键字修饰。同时由于main方法为程序的入口方法,因此不能用abstract关键字来修饰。

(2)同一个.java文件中是否可以有多个main方法?

虽然每个类中都可以定义main方法,但是只有与文件名相同的用public修饰的类中的main方法才能作为整个程序的入口方法。如下例所示,创建了一个名为Test.java的文件。

class T{

public static void main(String[] args) {

System.out.println("T main");

}

}

public class Test {

// 程序入口函数

public static void main(String[] args) {

System.out.println("Test main");

}

}

程序运行结果为:

Test main

常见笔试题:

Java程序中程序运行入口方法main的签名正确的有( )

A:publicstatic void main(String[] args)                   B:publicstatic final void main(String[] args)

C:staticpublic void main(String[] args)                    D:staticpublic synchronized void main(String[] args)

E:staticpublic abstract void main(String[] args)

答案: A、B、C、D。见上面讲解。

《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法的更多相关文章

  1. 《Java程序员面试笔试宝典》终于在万众期待中出版啦~

    <Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理 ...

  2. 《Java程序员面试笔试宝典》之Static关键字有哪些作用

    static关键字主要有两种作用:第一,只想为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关.第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过 ...

  3. 《Java程序员面试笔试宝典》之Java程序初始化的顺序是怎样的

    在Java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象. Java程序的初始化一般遵循以下三个原则(以下三原则优 ...

  4. 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法

    由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...

  5. 《Java程序员面试笔试宝典》之switch使用时有哪些注意事项

    switch语句用于多分支选择,在使用switch(expr)的时候,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其对应的包装类In ...

  6. 《Java程序员面试笔试宝典》之 instanceof有什么作用

    instanceof是Java语言中的一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例,即它左边的对象是否是它右边的类的实例,返回boolean类 ...

  7. 《Java程序员面试笔试宝典》之 什么是AOP

    AOP(Aspect-Oriented Programming,面向切面编程)是对面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态地修改模型从而满足新的需求.例如,在不改变原来业务逻 ...

  8. java面试:关于public static void main(String[] args)是什么意思?

    它是作为JAVA中的主函数,所有java程序的运行起点就是这个方法,除了args这个名字可以不一样外,其他必须是这样. 主函数的一般写法如下: public static void main(Stri ...

  9. public static void main(String[] args){} 关于Java main()方法

    是Java程序的入口方法,JVM在运行程序时,会首先查找main()方法. public是权限修饰符,表明任何类或对象都可以访问这个方法: static表明main()方法是一个静态方法,即方法中的代 ...

随机推荐

  1. EL表达式使用之类switch语句

    http://blacksonny.iteye.com/admin/blogs/1879878

  2. HDU 2025 查找最大元素

    查找最大元素 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  3. 【转】Difference between Point-To-Point and Publish/Subscribe JMS Messaging Models

    Difference between Point-To-Point and Publish/Subscribe JMS Messaging Models   Point-to-Point (PTP) ...

  4. React-nwb的使用

    一.查看nwb的版本 nwb -v 二.创建一个react项目 nwb new react-app react-demo 三.启动项目 nwb serve

  5. 《第一行代码》学习笔记11-活动Activity(9)

    1.android:theme,是用于给当前活动指定主题的,Android系统内置很多主题可以选择,@android:style/Theme.Dialog则是 让DialogActivity使用对话框 ...

  6. LinkedList : 双向链表与实现

    所谓双向链表: (由此图可见老夫深厚的画功) 链表,就是由一个一个的节点连接组成. 在这里,每一个节点都是由三部分组成:上一个节点.当前节点的元素.下一个节点 当链表中只有一个节点的时候,这个节点指向 ...

  7. Windows 不能在 本地计算机 启动 SQL Server(MSSQLSERVER)。错误码126

    结合自己的解决方案和网络上搜到的内容,现总结如下: 首先你要知道问题出在了什么地方才能针对性处理. 1.打开事件查看器 计算机右击——管理 右侧会出现错误列表,在其中找到SQL server有关的查看 ...

  8. String功能测试

    package foxe; import java.io.IOException;import java.util.StringTokenizer; public class MainClass { ...

  9. HTML中元素水平居中。

    一丶margin:0 auto; 试用最多的方法,简单实用. 二丶vertical-align:middle; 只适用于内嵌元素,比如说一个div中有一个图片和文字,要让图片和文字中线对齐. < ...

  10. 关于HTML5中audio标签在手机中的autoplay

    这个问题是我最头疼的: 问题描述:在开发手机网页的时候,苹果和三星的一些浏览器不能自动开始播放 解决办法:在这个页面上弹出一个层来触发audio标签的play()方法,或者你还可以 谷歌一下----& ...