`
pterodactyl
  • 浏览: 766822 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java中的main()方法详解

    博客分类:
  • java
阅读更多
Java中的main()方法详解 

--------------------------------------------------------------------------------

2007-12-03 10:45:39 标签:Java 编程 main()   [推送到技术圈]


版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/53263
Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。

在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下:

/**
* Java中的main()方法详解
*/
public class HelloWorld {
    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}

一、先说类:

HelloWorld 类中有main()方法,说明这是个java应用程序,通过JVM直接启动运行的程序。
既然是类,java允许类不加public关键字约束,当然类的定义只能限制为public或者无限制关键字(默认的)。

二、再说main()方法

这个main()方法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。

为什么要这么定义,和JVM的运行有关系。
当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。

由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static。

对于java中的main方法,jvm有限制,不能有返回值,因此返回值类型为void。
main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类细必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中mian参数名保持一致,取名为args。

因此,main()方法定义必须是:“public static void main(String 字符串数组参数名[])”。

三、main()方法中可以throw Exception

因此main()方法中可以抛出异常,main()方法上也可以声明抛出异常。

比如,下面这个写法是正确的:
public class TestMain {
        public static void main(String[] args) throws Exception {
                System.out.println("哈哈哈哈哈");
                throw new Exception("");
        }
}

运行结果:
哈哈哈哈哈
Exception in thread "main" java.lang.Exception:   
  at maintest.TestMain.main(TestMain.java:11)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:585)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

Process finished with exit code 1

四、main()方法中字符串参数数组作用

main()方法中字符串参数数组作用是接收命令行输入参数的,命令行的参数之间用空格隔开。

下面给出一个例子,看看如何初始化和使用这个数组的。
/**
* 打印main方法中的输入参数
*/
public class TestMain {
    public static void main(String args[]){
        System.out.println("打印main方法中的输入参数!");
        for(int i=0;i<args.length;i++){
            System.out.println(args[i]);
        }
    }
}

执行方法和运行结果
D:\Study\basetest\src>javac TestMain.java

D:\Study\basetest\src>java TestMain 1 2 3
打印main方法中的输入参数!
1
2
3



五、给出HelloWorld的另外一个版本

/**
* 变态版的HelloWorld.呵呵
*/
public class HelloWorld2 {
    static {
        System.out.println("Hello Wordld!");
    }
    public static void main(String args[]){
        System.exit(0);
    }
}

这个main()方法执行的内容就一句"System.exit(0);" ,目的是让程序正常结束。那“HelloWorld!”是从哪里打印的,秘密就是在static打印的,因为static代码块的内容会在main调用前调用。

总结:
main方法作为一个特殊的规范,与普通的方法有很大区别,限制很多,理解其原理需要学习JVM相关知识。是Java中学习中大障碍。这是我对main原理和使用的总结,欢迎各位在此讨论。



本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/53263

本文出自 51CTO.COM技术博客




上一篇 Java中的return语句使用总结  下一篇 Java5新特征之foreach语句使用总结


类别:J2SE ┆ 技术圈( 5 ) ┆ 阅读( 3454 ) ┆ 评论( 4 ) ┆推送到技术圈 ┆返回首页  



    相关文章Java编程--break和continue语句程序员都应该关注的问题:Java编程规则王者再次归来《Java编程思想 第4版》JAVA编程艺术Java的网络功能与编程Vector在Java编程中的应用Java多线程编程经验谈java泛型编程简析JAVA的XML编程java多线程编程

    文章评论
[1楼]      [匿名]black angle
2007-12-03 12:25:06
好久不见java
短消息通知评论者

[2楼]      [匿名]frade
2007-12-03 14:18:13
main()方法很重要 以前主要是用的C 这次学学java
短消息通知评论者

[3楼]      [匿名]tuiroger
2008-03-21 23:25:07
初学JAVA,请高手指点
//Test2.java
class Test1{
private String s="Test1";
public void append (String a) {s+=a;}
public void me() {append("me()");}

public String toString() {return s;}
public static void main(String[] arg) { //Test1 main()
Test1 t1=new Test1();
t1.me();
System.out.println(t1);
}
}

public class Test2 extends Test1{
  public void you() {append("you()");}
public static void main(String[] args) { //Test2 main()
Test2 t2=new Test2();
t2.me();
t2.you();
System.out.println(t2);
Test1.main(args);
//Test1.main(arg);   error
}
}
//output :Test1me()you()
      Test1me()

提问:1.Test2 main()中Test1.main(args);语句,用类名直接调用main(),括号中的参数应该是什么
  2.参数为什么只能是args
  3.参数换成arg,就出错,由此看Test1.main(args);是调用的子类中main(),为什么由输出结果看是调用的父类的main()
短消息通知评论者

[4楼]      leizhimin
2008-03-22 10:18:26
非也,main方法参数名字无所谓,只要参数是字符串数组即可.

短消息通知评论者
分享到:
评论

相关推荐

    JAVA入门必备知识:JAVA之Main方法详解

    Java 语言中的 Main 方法是每个初学者学习编程的起点,它是 Java 应用程序的入口点。理解 Main 方法的工作原理和重要性对于掌握 Java 编程基础至关重要。在这个主题中,我们将深入探讨 Main 方法的各个组成部分及其...

    Java中的main()方法详解.doc

    Java中的main()方法详解 Java中的main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法。这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是...

    Linux上执行带main方法的java文件

    ### Linux环境下执行含main方法的Java文件详解 #### 标题与描述概述 本文主要介绍如何在Linux系统中执行带有`main`方法的Java文件。通常情况下,在开发环境中可以直接通过IDE或其他工具运行Java应用程序;然而,在...

    Java基础入门编程详解

    11. **异常处理**:Java中的异常处理机制允许程序员优雅地处理错误情况。通过try-catch-finally语句块,可以捕获并处理可能出现的异常。 12. **输入输出(I/O)**:Java的I/O流系统用于读写文件、网络通信等。学会...

    java贪吃蛇代码及详解

    Java中的`public static void main(String[] args)`方法就是主函数,它是程序执行的起点。 2. **food类** 这个文件定义了游戏中的食物对象。贪吃蛇通过吃到食物来增长。在Java中,通常使用类(Class)来表示这样的...

    Java网络socket编程详解

    3. 在服务器端代码中设置端口号,并在main方法中创建ServerSocket实例,等待客户端的连接。通过循环读取客户端发送过来的数据,并将处理结果发送回客户端。当客户端发送特定消息,如"byebye"时,结束循环并关闭连接...

    java中main函数解析.docx

    ### Java中的main函数详解 #### 一、main函数的重要性与定义 在Java中,`main`函数具有极其重要的地位,它是程序的入口点。当Java虚拟机(JVM)启动时,它会寻找名为`main`的方法来开始执行程序。因此,`main`方法...

    java技术:java中static作用详解

    - Java应用程序的入口点通常是一个带有`static`关键字的`main`方法,形如`public static void main(String[] args)`。 - 因为主方法是静态的,JVM可以直接调用,无需创建类的实例,使得它成为程序启动的起点。 ...

    第04章 面向对象(上) 11 完整内存结构图与main方法详解

    面向对象编程是Java语言的核心特性,本章将深入探讨这一概念的上半部分,特别是针对“完整内存结构图”和“main方法”的详尽解析。内存结构图是理解程序运行时数据存储的关键,而main方法则是Java应用程序的入口点。...

    Java使用agent实现main方法之前的实例详解

    Java 使用 Agent 实现 main 方法之前的实例详解 在 Java 中,使用 Agent 可以在 main 方法之前执行一些操作,这可以帮助开发者在主程序执行之前完成一些必要的任务。下面将详细介绍 Java 使用 Agent 实现 main 方法...

    Java零基础 - main方法.md

    ### Java零基础-main方法 #### 源码详解与运行过程 本文主要针对Java初学者,详细介绍`main`方法的基本结构、语法以及如何编写和运行一个最简单的Java程序。此外,还会涉及如何利用`System.out.println`方法输出...

    java与javac命令详解

    Java 与 javac 命令详解 Java 和 javac 命令是 Java 语言的基本组成部分,它们在 Java 应用程序的编译和执行过程中扮演着重要的角色。javac 命令用于编译 Java 程序源代码,生成字节码文件,而 java 命令用于执行...

    Java RMI远程方法调用详解-例子代码

    首先,我们需要定义一个实现了`java.rmi.Remote`接口的类,比如`MyRemoteInterface.java`,并在这个接口中声明所有需要远程调用的方法。这些方法必须抛出`java.rmi.RemoteException`,因为网络通信可能会出现异常。...

    java 反射机制详解

    在 `main` 方法中,`Son1` 类的实例被创建,并且 `setName` 方法被调用,设置了一个名字为 "wang dasha"。这展示了如何在不直接引用具体类名的情况下,通过反射动态地操作对象。 反射的核心类有以下这些: 1. **...

    java数组初始化详解

    Java 数组初始化详解 Java 数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和初始化数组,以便于存储和操作数据。在本文中,我们将对 Java 数组初始化进行详细的介绍,包括一维数组和二维数组的声明...

Global site tag (gtag.js) - Google Analytics