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

main()方法的方法签名

public static void main(String[] args)

方法签名讲解

  • public修饰符:java类由java虚拟机(JVM)调用,为了没有限制可以自由的调用,所以采用public修饰符。
  • static修饰符:JVM调用这个主方法时肯定不是先创建这个主类的对象,再通过对象来调用方法,而是直接通过该类来调用这个方法,因此需要使用static修饰符修饰这个类。
  • void返回值:主方法被JVM调用,将返回值返回给JVM没有任何意义,因此该方法没有返回值,所以使用void。

扩展:

  • public:该修饰符表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。
  • static:该修饰符表示静态的意思,简单理解被static修饰符修饰的成员都属于类本身,而不属于类的某个实例,静态成员不能能直接访问非静态成员。
  • void:使用void说明没有返回值。

这时会发现我没有说字符串数组形参内容,这里我们首先知道,谁调用方法,谁去传递形参,所以args形参由JVM负责赋值,JVM给args赋了什么值?

我们先看一段程序:

public class args {
  public static void main(String[] args){
    for (String s:args) {
      System.out.println(s);
    }
    System.out.println("-------------------" );
    System.out.println(args.length);
  }
}

输出:

-------------------
0

这里输出数组长度为0,这是因为,程序没有给args设定参数值,所以JVM也就不知道args数组中的元素,然后JVM给args数组设置为一个长度为0的数组。

如果我们使用dos命令运行程序时,在类名后加上一个或者多个字符串(以空格隔开),这时JVM会依次将这些数值赋给args数组。

例如:

λ java lzjarg lzj why
lzj
why
-------------------
2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详细讲解Java中的main()方法

    前言 JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了.我也是在学习中碰到了这个问题,通过在网上搜索资料,并加上自己的实践终于有了一点心得,不敢保留,写出来与大家分享. Java中的main()方法 java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载.如果没有装载,那么就装载该类,并且装载所有

  • java 打印一字符串,并在main()方法内调用它

    这个是写的Java的第一个程序. 这个就是java 语言的基本框架了的吧 package com.itheima; /** * 1. 编写一个方法(名字自定,但要符合Java编码规范),方法内打印一字符串,并在main()方法内调用它. * @author 281167413@qq.com */ public class Test1 { public static void main(String[] args) { System.out.println("My first station! i

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

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

  • shell脚本运行java程序jar的方法

    在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本: #!/bin/sh export mypath=/root/project/wishnomal java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypat

  • nodejs require js文件入口,在package.json中指定默认入口main方法

    我们都知道nodejs遵循commonJS规范,各个js是独立的. 如果目录结构是: –config 文件夹 – index.js – test.js app.js 那么在app.js中require('./config')的时候,默认是index.js. 如何修改默认的config的入口? 只需要在config中添加package.json配置文件,在这个文件中进行指定默认的入口 { "name":"配置文件", "description":&

  • Android Studio无法执行Java类的main方法问题及解决方法

    Android Studio升级到哦最新版3.6.1后,新建了个项目,发现无法执行Java类的main方法.试了网上的各种方法,比如切换gradle离线模式.gradle.properties中添加android.enableAapt2=false等,我还尝试了重新情况Gradle缓存.重新下载gradle等方式,都没用. 环境 android studio版本:3.6.1 gradle版本:5.6.4 gradle插件版本:3.6.1 错误提示 11:41:35 PM: Executing t

  • 浅析java程序中hibernate的应用总结

    我们知道如果用java连接数据库,大量的SQL代码,我们就想通过一种工具来操作数据库,我们首先想到的就是JDBC,但是想更好的针对类的属性进行操作,我们会选择Hibernate. 那么Hibernate 原理是什么呢?hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,而数据库返回来的信息hibernate接收之后直接生成一个对象传给java. 一  首先我们先了解一下hibernate的工作7个流程:1.读取并解析配置文件   2.创建SessionF

  • 浅谈Java文件执行顺序、main程序入口的理解

    在我们通过JVM编译Java后缀名的文件时,JVM首先寻找入口(main方法) public static void main(String[] args) 1.由于在入口时,未调用任何对象,该方法只能设置为static静态 2.JVM为Java的最底层,所以即使有返回结果,结果也无处可去,因此该方法必然是void无返回值 3.由于main方法是入口,被JVM自动调用,只有将该方法设置为public公有级别才能对JVM可见 综上,入口main方法只能写为 public static void m

  • Java虚拟机调用Java主类的main()方法

    目录 鸠摩 在前一篇 第1篇关于Java虚拟机HotSpot,开篇说的简单些 中介绍了call_static() .call_virtual()等函数的作用,这些函数会调用JavaCalls::call()函数.我们看Java类中main()方法的调用, 调用栈如下: JavaCalls::call_helper() at javaCalls.cpp os::os_exception_wrapper() at os_linux.cpp JavaCalls::call() at javaCalls

  • 一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就没有多说.但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是两眼一抹黑,所以今天松哥想和大家聊一下前后端分离以及 Vue.js 的一点事,算是一个简单的入门科普吧. 前后端不分 后端模板:Jsp.FreeMarker.Velocity 前端模板:Thymeleaf 前

  • ASP.NET Core 中的Main方法详解

    在 ASP.NET Core 项目中,我们有一个名为Program.cs的文件.在这个文件中,我们有一个public static void Main()方法 . public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[]

随机推荐