浅析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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
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()方法
前言 JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了.我也是在学习中碰到了这个问题,通过在网上搜索资料,并加上自己的实践终于有了一点心得,不敢保留,写出来与大家分享. Java中的main()方法 java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载.如果没有装载,那么就装载该类,并且装载所有
-
浅析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[]
随机推荐
- ES6学习之变量的解构赋值
- JQuery控制div外点击隐藏而div内点击不会隐藏的方法
- 超级给力的JavaScript的React框架入门教程
- 解析分别用递归与循环的方式求斐波那契数列的实现方法
- 好用的Python编辑器WingIDE的使用经验总结
- asp.net textbox javascript实现enter与ctrl+enter互换 文本框发送消息与换行(类似于QQ)
- thinkphp验证码的实现(form、ajax实现验证)
- php实现文件编码批量转换
- JSP父页面传参数到子页面及接收示例
- ASP BASE64加解密(亲测可用)
- MySQL的23个需要注意的地方
- 详解javascript获取url信息的常见方法
- JSP是什么?JSP是什么意思?
- 谈谈网页设计中的字体应用Font Set
- C#操作注册表的方法
- SmoothWall 防火墙软路由安装+配置详解
- PHP面向对象程序设计继承用法简单示例
- Angularjs中date过滤器失效的问题及解决方法
- java实现多个文件压缩成压缩包
- Android MediaPlayer 音频倍速播放 调整播放速度问题