Java程序入口:main()方法讲解

Java程序的入口---main()方法的签名为:public static void main(String[] args) {...} ,其中,

? public修饰符:Java类由JVM调用,为了让JVM可以自由调用这个main()方法,所以使用public修饰符把这个方法暴露出来。

? static修饰符:JVM调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法。JVM直接通过该类来调用主方法,因此使用static修饰该主方法。

? void返回值:因为主方法被JVM调用,该方法的返回值将返回给JVM,这没有任何意义,因此main()方法没有返回值。

上面方法中还包括一个字符串数组形参String[] args,根据方法调用的规则:谁调用方法,谁负责为形参赋值。也就是说,main()方法由JVM调用,即args形参应该由JVM负责赋值。但JVM怎么知道为args数组赋值呢?先看下面程序:

public class ArgsTest{

  public static void main(String[] args){

    //输出args数组的长度

    System.out.println(args.length);

    //遍历args数组的每一个元素

    for(String arg : args){

      System.out.println(arg);

    }

  }

}

上面程序是最简单的“hello world”程序,只是这个程序增加了输出args数组的长度,遍历arg数组元素的代码。使用java ArgsTest命令运行上面的程序,看到程序仅仅输出一个0,这表明args数值是一个长度为0的数组,这是合理的,因为计算机是没有思考能力的,它只能忠诚地执行用户交给它的任务,既然程序没有给args数组设定参数值,那么JVM就不知道args数组的元素,所以JVM将args数组设置为一个长度为0的数组。

改为一下命令运行上面的程序:

java ArgsTest Java Spring

打印结果为:

2

Java

Spring

可以得出,如果运行java程序时在类名后面紧跟一个或多个字符串(多个字符串以空格隔开),JVM就会把这些字符串一次赋值给args数组元素。运行Java程序时的参数与args数组之间的关系为:第一个参数对应第一个数组元素,第二个参数对应第二个数组元素,... ,以此类推。

如果某参数本身包含了空格,则应该将该参数用双引号""括起来,否则JVM会把这个空格当成参数分隔符,而不是当成参数本身。例如,采用如下命令来运行上面的程序:

java ArgsTest "Java Spring"

看到args的长度是1,只有一个数组元素,其值是Java Spring。

问题:如何实现在main()方法执行之前输出"hello world"?

众所周知,在Java语言中,main()方法是程序的入口方法,在程序运行时,最先加载的就是main()方法,但这是否意味着main()方法就是程序运行时第一个被执行的模块呢?

答案是否定的。在Java语言中,由于静态块在类被加载时就会被调用,因此可以在main()方法执行前,利用静态块实现输出“hello world”的功能,示例如下:

public class Test{

  static{

    System.out.println("hello world");

  }

  public static void main(String[] args){

    System.out.println("hello my world");

  }

}

程序运行结果为:

hello world

hello my world

由于静态代码块不管顺序如何,都会在main()方法执行之前执行,因此,以下代码会与上面的代码有同样的输出结果:

public class Test{

  public static void main(String[] args){

    System.out.println("hello my world");    

    static{

      System.out.println("hello world");

    }

  }

}

关注微信公众号【Java典籍】,收看更多java技术干货

 ▼微信扫一扫下图↓↓↓二维码关注

 

原文地址:https://www.cnblogs.com/bingyimeiling/p/10409728.html

时间: 2024-10-13 06:47:31

Java程序入口:main()方法讲解的相关文章

java程序入口main()方法浅析

java程序入口main()方法浅析 main()方法的方法签名 public static void main(String[] args) 方法签名讲解 ?public修饰符:java类由java虚拟机(JVM)调用,为了没有限制可以自由的调用,所以采用public修饰符. ?static修饰符:JVM调用这个主方法时肯定不是先创建这个主类的对象,再通过对象来调用方法,而是直接通过该类来调用这个方法,因此需要使用static修饰符修饰这个类. ?void返回值:主方法被JVM调用,将返回值返

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法

学java教程之main方法

学编程吧学java教程之main方法发布了,欢迎通过xuebiancheng8.com来访问 java中的main方法是程序执行的入口.如下图 public class Person{ public static void main(String args[ ]){ System.out.println("Hello"); } } 上面就是main方法的用法,类型必须是public的 static的 void返回值 方法名也必须是main,参数args[]是数组 可以获得程序执行时的参

Android(java)学习笔记158:Java程序入口和Android的APK入口

1.Java程序的入口:static main()方法 public class welcome extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public static void main(String[] args) { System.out.p

java入门学习:Java中的main()方法详解

本文来源:http://www.zretc.com/technologyDetail/445.html 在Java入门学习中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这

Java编程开发:Java中的main()方法详解

本文来源:http://www.zretc.com/technologyDetail/346.html 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说

面向对象和面向过程,python中的类class,python中程序的入口——main方法,

1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() #定义程序入口:Python中main函数默认是隐藏的,main函数在当前运行的模块下,定义程序入口就是让main函数显 #现出来 def __main__(): ....... 2.面向对象和面向过程: 面向对象:使用对象完成任务,不需要在意过程: 3.什么是类:一个类型,定义class来表示一个类

maven项目执行main方法讲解

项目中有时候会遇到执行main函数来测试类中所写的方法.普通的java程序在eclipse中执行非常简单,对要执行的java类,run as 即可编译运行,查看结果. 但是使用maven管理项目,对于maven项目还按照原来的方式就行不通了.下面讲解下如何在maven项目中执行main函数. 一.  maven项目执行main函数方法,需引入两个插件:maven-compiler-plugin和exec-maven-plugin插件. maven-compiler-plugin :用于编译jav

Java 中的main方法

public static void main(String args[]) public:表示此方法可以被外部所调用. static:表示此方法可以由类名称直接调用. void:主方法是程序的起点,所以不需要任何的返回值. main:系统规定好默认调用的方法名称,执行的时候,默认找到main方法名称 (String arg[]):表示的是运行时的参数 参数的传递形式:java 类名称 参数1 参数2 参数3 ... system.exit(1);只要传入了一个非零数字,程序退出: 可以用“”作